Académique Documents
Professionnel Documents
Culture Documents
NET a su alcance
Nivel Básico/Intermedio
1
2
Contenido
PRÓLOGO .................................................................................................................................... 7
1. INTRODUCCIÓN A VISUAL BASIC .NET .............................................................................. 10
1.1 Microsoft Visual Studio .NET ........................................................................................ 10
1.2 .NET FrameWork ......................................................................................................... 10
1.3 Página de Inicio Visual Studio .NET/2008 .................................................................... 11
2. PROYECTOS WINDOWS FORMS CON VISUAL BASIC .NET ............................................ 14
2.1 Crear una Aplicación 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 código .............................................................................................................. 21
2.6 Guardar la aplicación .................................................................................................... 22
2.7 Ejecutar la aplicación 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 práctico tipos de datos ................................................................................. 26
3.4 Funciones de conversión de tipos de datos ................................................................. 30
3.5 Operadores y Expresiones ........................................................................................... 32
3.5.1 Operadores aritméticos ............................................................................................. 32
3.5.2 Operadores relacionales ........................................................................................... 32
3.5.3 Operadores de igualdad ............................................................................................ 32
3.5.4 Operadores Lógicos .................................................................................................. 33
3.5.5 Ejemplo práctico operadores aritméticos .................................................................. 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. MÓDULOS Y PROCEDIMIENTOS ......................................................................................... 59
5.1 Módulos ........................................................................................................................ 59
5.2 Procedimientos o funciones ......................................................................................... 61
5.2.1 Ejemplo práctico módulo y procedimientos Sub y Function ...................................... 62
5.3 Funciones predeterminadas ......................................................................................... 66
5.3.1 Función de fecha y hora ............................................................................................ 66
3
5.3.1.1 Ejemplo práctico funciones de fecha y hora ........................................................... 67
5.3.2 Funciones Matemáticas ............................................................................................. 69
5.3.2.1 Ejemplo práctico funciones matemáticas ............................................................... 70
5.3.3 Funciones para cadenas de caracteres .................................................................... 72
5.3.3.1 Ejemplo práctico funciones de cadena de caracteres ............................................ 74
5.4 Ejercicios de procedimientos ........................................................................................ 77
6. MATRICES Y COLECCIONES ............................................................................................... 78
6.1 Matrices de una Dimensión o Unidimensionales ......................................................... 78
6.1.1 Ejemplo práctico matriz unidimensional .................................................................... 78
6.2. Matrices de más de una Dimensión ............................................................................ 81
6.2.1 Ejemplo práctico matrices bidimensionales .............................................................. 82
6.3 Colecciones .................................................................................................................. 84
6.3.1 Ejemplo práctico colecciones .................................................................................... 84
6.4 Ejercicios Matrices ........................................................................................................ 90
7. CONTROLES PARA INTERFAZ DE USUARIO ..................................................................... 91
7.1 LinkLabel ...................................................................................................................... 91
7.1.1 Ejemplo práctico LinkLabel ........................................................................................ 91
7.2 Controles ListBox y ComboBox .................................................................................... 93
7.2.1 Ejemplo práctico ListBox y ComboBox...................................................................... 93
7.3 Checkbox y RadioButton .............................................................................................. 99
7.3.1 Ejemplo práctico Checkbox y RadioButton ............................................................... 99
7.4 VScrollBar, HScroolBar, TrackBar. ............................................................................. 102
7.4.1 Ejemplo práctico VScrollBar y TrackBar ................................................................. 102
7.5 DataGridView .............................................................................................................. 105
7.5.1 Ejemplo práctico DataGridView ............................................................................... 105
7.6 ListView ...................................................................................................................... 107
7.6.1 Ejemplo práctico ListView ........................................................................................ 107
7.7 RichTextBox ............................................................................................................... 115
7.7.1 Ejemplo práctico RichTextBox ................................................................................. 115
7.8 TreeView. .................................................................................................................... 118
7.8.1 Ejemplo práctico TreeView ...................................................................................... 119
7.9 FolderBrowserDialog .................................................................................................. 122
7.9.1 Ejemplo práctico FolderBrowserDialog ................................................................... 122
7.10 WebBrowser ............................................................................................................. 125
7.10.1 Ejemplo práctico WebBrowser .............................................................................. 125
7.11 Ejercicios interfaz de usuario .................................................................................... 129
8. MENÚS EN FORMULARIOS ................................................................................................ 130
8.1 Creación de Menús con Interfaz de documento sencillo............................................ 130
8.1.1 Ejemplo práctico menús con interfaz de documento sencillo ................................. 130
8.2 Creación de Menús con interfaz múltiple ................................................................... 141
8.2.1 Ejemplo práctico formularios MDI ............................................................................ 141
8.3 Menú Ventana ............................................................................................................ 153
8.4 Desactivar las opciones del menú en formularios MDI .............................................. 156
8.5 Creación de una barra de herramientas en una aplicación MDI ................................ 156
8.6 Crear un menú contextual .......................................................................................... 159
9. GRÁFICOS Y ANIMACIÓN ................................................................................................... 162
9.1 El espacio de nombres System.Drawing .................................................................... 162
9.2 Movimiento de un control ........................................................................................... 172
9.2.1 Ejemplo práctico movimiento de un control ............................................................. 172
9.3 Expandir y contraer un control .................................................................................... 175
9.3.1 Ejemplo práctico expandir y contraer un control ..................................................... 176
9.4 Animación ................................................................................................................... 178
9.4.1 Ejemplos prácticos de animación ........................................................................... 178
9.5 Ejercicios de gráficos .................................................................................................. 187
10. MANEJO DE EVENTOS (MOUSE – TECLADO) ............................................................... 188
4
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. PROGRAMACIÓN ORIENTADA A OBJETOS CON VB.NET ............................................ 198
11.1 Constructores ........................................................................................................... 199
11.1.1 Constructores sin parámetros ............................................................................... 199
11.1.2 Constructores con parámetros .............................................................................. 200
11.1.3 Sobrecarga de constructores ................................................................................ 200
11.2 Herencia y polimorfismo ........................................................................................... 201
11.3 Ejemplos prácticos de clases ................................................................................... 202
11.4 Interfaces .................................................................................................................. 217
11.5 Ejemplo práctico 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 Cláusulas S.Q.L .................................................................................................... 224
12.2.3 Operadores lógicos S.Q.L .................................................................................... 224
12.2.4 Operadores de comparación S.Q.L ...................................................................... 225
12.2.5 Funciones de agregado S.Q.L ............................................................................... 225
12.3 Sentencias básicas 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 Conexión a bases de datos con VB.NET ................................................................. 230
12.5 Ejemplos prácticos de bases de datos ..................................................................... 231
12.5.1 Conexión a una base de datos SQL Server por código ........................................ 231
12.5.2. Conexión a SQL Server utilizando el Explorador de servidores .......................... 234
12.5.3 Conexión 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 Relación 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 prácticos 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 Relación entre dos tablas de una base de datos SQL Server .............................. 301
13.4.6 Relación tablas con LINQ to SQL y DataGridView ............................................... 306
13.4.7 Consulta LINQ to DataSet ..................................................................................... 311
5
13.5 Ejercicios de consulta LINQ ..................................................................................... 314
14. APLICACIONES WEB ASP.NET ........................................................................................ 315
14.1 Aplicación 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 aplicación 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 práctico control CheckBox List ............................................................. 327
14.2.2 Control ImageMap ................................................................................................. 329
14.2.2.1 Ejemplo práctico control ImageMap ................................................................... 330
14.2.3 Control BulletedList ............................................................................................... 333
14.2.3.1 Ejemplo práctico control BulletedList.................................................................. 334
14.2.4 Control RadioButtonList ......................................................................................... 337
14.2.4.1 Ejemplo práctico control RadioButtonList ........................................................... 337
14.2.5 Control MultiView ................................................................................................... 340
14.2.5.1 Ejemplo práctico control MultiView ..................................................................... 341
14.3 Controles para validar datos ..................................................................................... 348
14.3.1 Ejemplo práctico controles de validación .............................................................. 348
15. ACCESO A BASES DE DATOS CON ASP.NET ................................................................ 353
15.1 Controles para operaciones con orígenes de datos ................................................. 353
15.2 Ejemplos prácticos bases de datos con ASP.NET ................................................... 353
15.2.1 Conexión a SQL Server por código ....................................................................... 353
15.2.2 Conexión 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 práctico para acceder a un Servicio Web desde ASP.NET .................... 411
ÍNDICE ...................................................................................................................................... 416
BIBLIOGRAFÍA.......................................................................................................................... 419
INFOGRAFÍA............................................................................................................................. 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
6
PRÓLOGO
Visual Basic y ASP .NET a su alcance (básico / intermedio) proporciona los elementos
necesarios para obtener un conocimiento hasta un nivel intermedio del lenguaje de
programación Visual Basic. Este libro se elaboro pensado en aquellos usuarios que
están interesado en conocer las posibilidades de programación orientada a objetos con
Visual Basic .NET, lo relacionado con la creación de clases, herencia e interfaces.
Además conocer los fundamentos del lenguaje de programación: definición de
variables, constantes, tipos de datos, estructuras de control, módulos, procedimientos,
matrices y colecciones, así como también la creación de interfaz de usuario utilizando
aplicaciones Windows Forms y ASP.NET, acceso a bases de datos, el lenguaje de
consulta integrado LINQ y la creación y la utilización de servicios Web.
Todos los ejemplos del libro se han codificado, compilado y ejecutado desde el
entorno de desarrollo integrado de Microsoft Visual Studio 2008 (la mayoría de los
ejemplos también se pueden trabajar con las versiones Express Edition Visual Basic
2005/2008 y Visual Web Developer 2005/2008).
7
Capitulo 5, Módulos y Procedimientos: Aquí se habla sobre la creación de
módulos y procedimientos Sub y Function. Además se conceptualiza sobre
algunas funciones predeterminadas de fecha y hora, matemáticas y de
manipulación de caracteres, complementado con ejemplos prácticos y
ejercicios para resolver.
Capitulo 6, Matrices y colecciones: Se habla sobre la estructuración de
datos en matrices unidimensionales y bidimensionales con elementos de un
mismo tipo y las colecciones en memoria con tipos de datos diferentes; aquí
también se presentan ejemplos aplicados al tema, como también ejercicios
para practicar.
Capitulo 7, Controles para Interfaz de Usuario: Se explican y trabajan
controles que permiten mejorar el diseño de la interfaz gráfica de usuario en
un programa apoyado por ejemplos.
Capitulo 8, Menús en Formularios: En este capítulo encontrará la forma de
crear menús con interfaz de documento sencillo y múltiple, así como la
creación de barras de herramientas, menús contextuales y desactivar
opciones del menú, explicados a través de ejemplos.
Capitulo 9, Gráficos y animación: Se conceptualiza sobre el espacio de
nombres System.Drawing, algunas funciones para graficar, el movimiento de
controles, la expansión y contracción de controles, así como los aspectos
básicos para lograr la animación. Todo esto es apoyado con ejemplos
prácticos 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 prácticos para un mejor aprendizaje.
Capitulo 11, Programación orientada a objetos utilizando VB.NET: Se
manejan los conceptos de programación orientada a objetos utilizando el
lenguaje de programación Visual Basic .NET en cuanto a: constructores,
sobrecarga de constructores, herencia, polimorfismo e interfaces, cada tema
explicado a través 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 información contenida en ella,
complementada con ejemplos prácticos y ejercicios para resolver.
Capitulo 13, Lenguaje de consulta integrado (LINQ): En este capítulo se
habla de cómo 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 capítulo se habla de
cómo crear y ejecutar una aplicación Web ASP.NET. Además se explican
algunos controles utilizados en los formularios Web para el diseño de la
interfaz de usuario y para la validación 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 conexión que se manejan en el
capítulo 12 en aplicaciones Web ASP.NET, apoyado con ejemplos. Además
se presentan una serie de ejercicios como complemento al aprendizaje del
acceso a base de datos con ASP.NET.
8
Capitulo 16 Servicios Web: En este capítulo se conceptualiza sobre los
servicios Web, la creación de un servicio Web, así como la forma de accesar
a un servicio Web desde una aplicación ASP.NET.
Anexo A: Se explica cómo se realiza la conexión a la base de datos SQL
Server, así como la creación de una base de datos, la creación 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.
9
1. INTRODUCCIÓN A VISUAL BASIC .NET
Visual Basic .NET (VB.NET) es una versión de Visual Basic enfocada al desarrollo de
aplicaciones .NET. Este lenguaje de programación apareció en el año 1991 como una
evolución del QuickBasic que fabricaba Microsoft. Dicho lenguaje de programación es
orientado a objetos y permite crear la interfaz de usuario utilizando formularios y
controles a los cuales se les puede escribir código para definir el comportamiento de una
aplicación. Visual Basic .NET contiene una serie de instrucciones, funciones y palabras
clave que están relacionados con la interfaz grafica de Windows. Con este lenguaje es
posible la creación de aplicaciones Windows Forms y sitios Web, donde se puede
realizar la gestión estructurada de errores, el soporte para la ejecución de varios
subprocesos, así como la interacción con archivos de texto, bases de datos, utilizando el
envió de datos con documentos XML1 y la generación 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).
Para el objetivo del libro se trabajará con el entorno Microsoft Visual Studio
2008.
1
XML, es el estándar de Extensible Markup Language. XML no es más que un conjunto de reglas para
definir etiquetas semánticas 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 programación diferentes
basados en Windows o Web.
Ofrecer estándares para que el código de .NET FrameWork se pueda integrar
con otros tipos de código.
Aplicaciones de consola.
Aplicaciones Windows Forms.
Aplicaciones Windows Presentation Foundation (WPF).
Aplicaciones ASP.NET
Servicios Web.
11
Para iniciar el entorno de Visual Studio .NET 2008 pulse la opción Microsoft
Visual Studio 2008.
Característica Descripción
Diseñador de Windows Una superficie de diseño gráfico que permite crear
Forms rápidamente la interfaz de usuario de una aplicación. Se
puede arrastrar o dibujar controles sobre esta superficie.
Herramientas para Se proporciona una plantilla Aplicación Windows Forms,
Aplicaciones Windows con referencias de proyectos básicos y código de inicio
Forms como ayuda para crear aplicaciones Windows Forms
estándares.
Herramientas para Web Se proporciona una plantilla Aplicación Web ASP.NET, con
Forms referencias de proyectos básicos y código de inicio como
ayuda para crear aplicaciones Web ASP.NET en las que la
interfaz de usuario principal es un navegador.
Herramientas para Se proporciona una plantilla Aplicación de servicios Web
servicios Web XML ASP.NET. Esta plantilla construye la estructura de un
proyecto de aplicación Web en un servidor Web de
desarrollo.
12
Soporte de múltiples Soporta los lenguajes de programación de la plataforma
lenguajes .NET: Visual Basic .NET, Visual C++ y Visual C#, que
están 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.
Gestión de errores Las herramientas de depuración con soporte multilenguaje
ayudan a encontrar y solucionar errores de código, donde
se pueden utilizar clases de excepciones estructuradas
para incluir la gestión de errores en una aplicación.
Asistentes Los asistentes ayudan a completar rápidamente tareas
comunes. Cada página de un asistente ayuda a establecer
opciones, configurar y personalizar proyectos.
2
Un nuevo conjunto de herramientas diseñado para reducir la complejidad del acceso a Base de Datos.
13
2. PROYECTOS WINDOWS FORMS CON VISUAL BASIC .NET
Crear una aplicación 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 código, guardar la
aplicación y ejecutar el proyecto.
Para crear una aplicación Windows Forms desde la página de inicio de Visual Studio, se
pueden seguir los siguientes pasos:
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 aplicación
proporciona archivos de inicio y una estructura de proyecto, además contiene los
objetos básicos del proyecto y la configuración del entorno que se necesita para crear el
tipo de aplicación que se desea. En los ejemplos del libro se utilizarán las plantillas:
14
Aplicación para Windows Forms y Aplicación Web ASP.NET. La plantilla
Aplicación para Windows Forms proporciona las herramientas, estructura y código de
inicio para crear una aplicación estándar basada en Windows, añadiendo
automáticamente las referencias básicas del proyecto y los archivos a utilizar como
punto de partida para la aplicación. La plantilla Aplicación Web ASP.NET se utiliza
para crear una aplicación Web ASP.NET en un equipo que tenga instalado Internet
Information Services (IIS)3 versión 5.0 o posterior. Para iniciar el diseño de la
aplicación la plantilla crea los archivos básicos necesarios en el servidor.
3
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 páginas
Web tanto local como remotamente (servidor Web).
15
ventana de propiedades, el cuadro de herramientas y otros elementos
importantes del entorno de desarrollo.
Menú Principal
Barra de Herramientas
16
minimizar, maximizar y cerrar. Para visualizar un formulario en la vista Diseño
se puede realizar siguiente:
o Con el Explorador de soluciones , hacer doble clic en el formulario.
Ó
17
La siguiente tabla describe algunos tipos de archivos habituales específicos para
las soluciones basadas en Visual Basic .NET:
o Para visualizar las propiedades por categorías: Haga clic en el botón Por
18
Figura 2.7 Cuadro de propiedades.
Para crear la interfaz de usuario de la aplicación, 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 añadir y arrástrelo a la ubicación deseada en el formulario. Para
este caso de ejemplo se diseñara la interfaz de usuario utilizando los siguientes
controles: 3 Label (etiqueta), 1 TextBox (campo de texto), 1 Button (botón) y 1
DataGridView (malla de datos).
Los siguientes pasos permiten:
19
Figura 2.9 Prepantalla de la interfaz de usuario.
20
Figura 2.10 Pantalla final de la interfaz de usuario.
Una vez se hayan establecido las propiedades iníciales del formulario y sus objetos, se
puede agregar el código 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 botón tiene lugar cuando un usuario hace clic
sobre él con el mouse. Por lo general en las aplicaciones, es necesario escribir código
para lograr el objetivo de dar solución al problema planteado por el usuario. Para
escribir código que se ejecute en un evento determinado de un control, se debe realizar
lo siguiente:
21
Figura 2.11 Editor de código del objeto boton.
Para el caso del ejemplo dé doble clic en el objeto Button llamado boton y abra
el editor de código, la figura muestra el editor de código del control
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 código sirve para rellenar el objeto tabla con los respectivos datos.
Utilizando el método 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 posición 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.
Una vez finalizada la creación de la aplicación, se debe guarda la aplicación dentro del
entorno de desarrollo para asegurar que todos los cambios realizados se almacenen, esto
se puede realizar de la siguiente forma:
22
Figura 2.12 Ventana para Guardar el proyecto.
23
Si se escribe el número 5 en el campo de texto y se pulsa el botón Ver Tabla, se
visualizará la siguiente figura.
24
3. FUNDAMENTOS DE VISUAL BASIC .NET
Para iniciar el conocimiento del mundo Visual Basic .NET, es necesario conocer
conceptos fundamentales como: creación de variables, constantes, tipos de datos, tipos
de operadores, definición de comentarios, expresiones, etc.
3.1 Variables
Las variables pueden ser locales o globales. Las variables locales son aquellas
que se crean dentro de un bloque específico de programación y se destruirán al
finalizarse el bloque de programación.
Ejemplo:
Private Sub función ()
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 función ()
Dim var_local As integer
var_global=10 (valor modificado en la función1 ())
::::::::
End Sub
Private Sub función2 ()
Dim var_local As integer
var_global=20 (valor modificado en la función2 ())
::::::::::
End Sub
::::::::::::::::
End Class
25
3.2 Constantes
Son variables que permanecen constantes durante el desarrollo del programa. Existen
constantes numéricas, de carácter, lógicas, etc. El formato de la declaración de una
variable constante es:
Un tipo de dato define todo el posible rango de valores que una variable puede tomar al
momento de la ejecución 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 podrían utilizar serían short, long,
integer. Si utiliza el tipo de dato short, la aplicación utilizaría menos memoria para
almacenar el valor de la variable. A continuación se presenta la tabla con los tipos de
datos que soporta Visual Basic .NET y su respectivo tamaño.
26
Iniciar un nuevo proyecto Visual Basic .NET
27
Tabla 3.2 Propiedades de los controles de la aplicación TiposdeDatos.
Escribir código
Una vez se hayan establecido las propiedades iníciales del formulario y sus objetos, se
puede agregar código que se ejecutará en respuesta a eventos.
Para escribir código que se ejecute en un evento determinado del control, realice
lo siguiente:
Para el ejemplo, dé doble clic sobre el objeto boton para ver el editor de código,
la figura 3.2, muestra el editor de código del control.
28
Private Sub boton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles boton.Click
:::::::::::::::,
End Sub
End Class
Después dé doble clic sobre el objeto botonsalir, para abrir el editor de código y escriba
el siguiente código:
End
Guardar la aplicación
29
Ejecutar el proyecto
Son funciones que se utilizan para realizan conversión a un tipo de dato diferente al que
inicialmente estaba estipulado en una variable. Estas funciones generalmente forman
parte del código de un programa. Su formato es:
Objeto_nuevo_tipo=nombre_función_de_conversion (expresión).
30
Tabla 3.3 Funciones de conversión.
31
3.5 Operadores y Expresiones
Los operadores son símbolos que pueden realizar acciones sobre uno o dos operandos.
Se clasifican en: aritméticos, relacionales, lógicos, de asignación. Las expresiones son
combinaciones de constantes, variables, símbolos de operaciones, paréntesis.
32
3.5.4 Operadores Lógicos
33
Tabla 3.8 Propiedades de los controles del proyecto OperadoresAritméticos.
34
Escribir código
Ejecutar el proyecto
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:
Palabras Clave
AddHandler AddressOf ÁndAlso Alias And
Ansi As Assembly Auto Boolean
ByRef Byte Byval Call Case
Match CBool CByte CChar Cdate
CDec CDbl Char CInt Class
CLng CObj Const CShort CSng
CStr CType Date Decimal Declare
Default Delegate Dim DirectCast Do
Double Each Else ElseIf End
Enum Erase Error Event Exit
False Finally For Friend Function
Get GetType GoTo Handles If
Implements Imports In Inherits Integer
Interface Is Lib Like Long
Loop Me Mod Module MustInherit
MustOverride MyBase MyClass Namespace New
Next Not Nothing NotInhertable NotOverridable
Object On Option Optional Or
OrElse Private Property Protected Public
RaiseEvent ReadOnly ReDim Rem RemoveHandler
Resume Return Select Set Shadows
Shared String Structure Static Step
Stop Short Single Sub SyncLock
Then Throw To True Try
Typeof Unicote Until When While
UIT WithEvents WriteOnly Xor
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 línea.
Ejemplo:
‘ Este es un comentario
36
4. ESTRUCTURAS DE CONTROL
4.1.1 Sentencia If
Se pueden anidar varios If, es decir, uno entre otro, para ingresar cada vez al If
más interno es necesario que la condición sea verdadera. Se debe tener en cuenta que
por cada bloque If que se realice debe existir una finalización EndIf. También se
pueden utilizar los operadores lógicos (And, Andalso, Or, OrAlso, Xor, Not) para
concatenar varias condiciones. Si se utiliza el operador lógico 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 (condición1 And condicion2…) Then
Instrucción(es) a ejecutarse si las condiciones son verdaderas
:::::::
Endif
Resto del programa
Ó
If (condición1 Or condicion2…) Then
Instrucción(es) a ejecutarse si alguna de las condiciones es verdadera
::::::::
Endif
Resto del programa
Es una estructura compuesta que evalúa una condición. 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 (condición) Then
Instrucción(es) a ejecutarse si la condición es verdadera
::::::::
Else
Instrucción(es) a ejecutarse si la condición es falsa
::::::::
Endif
Resto del programa
38
4.1.3 If (operador)
Se utiliza para una toma de decisión múltiple donde se devolverá uno de dos valores al
evaluar una expresión. Su formato es:
4.1.4 IIF
Ejemplo:
H M S +1 un H M S
segundo
17 15 25 17 15 26
13 44 59 13 45 0
18 59 59 19 0 0
23 59 59 0 0 0
NOTA: a partir de este capítulo se omitirán 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.
Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
40
TextBox5 Name minutos
Text En blanco
TextBox6 Name segundos
Text En blanco
Button1 Name boton
Text Más un segundo
Form1 Name formulario
Text Toma de decisiones (If-Else) en Visual Basic .NET
Escribir código
Seleccione el objeto boton, dé doble clic para abrir el editor de código boton_Click y
escriba el siguiente código:
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
Ejecutar el proyecto
Es una toma de decisión con varias opciones, esto es, según 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
43
Establecer las propiedades de los objetos de la interfaz de usuario
Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
Escribir código
Seleccione el objeto boton, dé doble clic para abrir el editor de código boton_Click y
escriba el siguiente código:
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 = "Sábado"
Case Is = 7
dia.Text = "Domingo"
Case Else
dia.Text = "No es un dia de la semana"
End Select
Ejecutar el proyecto
Sirve para repetir una o varias instrucciones, usando una variable que por lo general es
llamada contador; esta estructura inicializa el contador y evalúa su valor por medio de
una condición, si esta es verdadera se ejecutarán las instrucciones del ciclo y aumentará
o disminuirá el contador automáticamente, de lo contrario se finalizará el ciclo. Su
formato es:
For variable =expresion1 To expresión2 [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).
Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
46
Form1 Name formulario
Text Estructura For-Next
Escribir código
Seleccione el objeto boton, dé doble clic para abrir el editor de código boton_Click y
escriba el siguiente código:
Dim inicio, valor, suma As Integer
For inicio = 1 To 10
valor = InputBox("Digite numero", "Captura de números")
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
números capturados con la función InputBox (Esta función permite capturar un valor
por teclado; en este caso, solamente se utilizan dos parámetros: 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 botón Capturar 10 números se mostrará el cuadro
de captura:
47
Figura 4.9 Cuadro para capturar los números.
Sirve para repetir una secuencia de instrucciones siempre que la condición evaluada sea
verdadera. Si al evaluarse la condición es falsa no ingresará al ciclo y continuará con el
resto del programa. Su formato es:
While (condición)
Instruccion(es)
::::::::
incremento ó decremento
End While
Resto del programa
48
4.4.1 Ejemplo estructura While
Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
49
Figura 4.12 Interfaz de usuario final (EstructuraWhile).
Escribir código
Seleccione el objeto boton, dé doble clic para abrir el editor de código boton_Click y
escriba el siguiente código:
Dim contador, valor, nmayor, nmenor As Integer
contador = 1
While (inicio <= 10)
valor = InputBox("Digite numero", "Captura de números")
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
50
contador en 1 para que al digitar los 10 valores se pueda salir del ciclo While.
Ejecutar el proyecto
Existen muchas situaciones en las que se desea que un ciclo se ejecute al menos una vez
antes de comprobar la condición de repetición. En la estructura While si el valor de la
expresión booleana es inicialmente falso, las instrucciones del ciclo no se ejecutarán;
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
Instrucción(es)
::::::::
incremento ó decremento
Loop While (condición)
Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
52
MultiLine True
ScrollBar vertical
TextBox2 Name camposuma
Text En blanco
Button1 Name boton
Text Capturar 10 números
Form1 Name formulario
Text Estructura Do – Loop While
Escribir código
Seleccione el objeto boton, dé doble clic para abrir el editor de código boton_Click y
escriba el siguiente código:
Dim valor, suma As Integer
Dim respuesta As String
Do
valor = InputBox("Digite número:", "Capturar números")
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 números capturados con la función InputBox, además 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 función MsgBox (El primer parámetro
es un mensaje para el cuadro de diálogo; el segundo parámetro es una expresión
numérica que especifican el número y los botones que se van a mostrar). Si desea
continuar (Si) capturando números 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
54
Figura 4.19 Ejecución aplicación EstructuraDoLoopWhile.
Sirve para repetir una o varias instrucciones por cada elemento de una colección. Esta
estructura es útil cuando en una colección no se puede determinar cuántos elementos
existen. Su formato es:
For Each elemento [As tipo_de_dato] In colección
Instruccion(es)
::::::::
Next elemento
Hacer una aplicación llamada EstructuraForEach que permita a un usuario digitar una
oración en un campo de texto e imprimir cuantas vocales A contiene dicha oración.
55
Figura 4.20 Interfaz de usuario inicial (EstructuraForEach).
Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
56
Escribir código
Seleccione el objeto boton, dé doble clic para abrir el editor de código boton_Click y
escriba el siguiente código:
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
Ejecutar el proyecto
57
4.7 Ejercicios estructuras de control
1. Escribir un programa que pida al usuario digitar dos números e imprima las
operaciones con los operadores aritméticos, los operadores relacionales y los
operadores lógicos.
2. Realizar un programa que pida al usuario digitar dos números enteros e imprima
él número mayor seguido del texto "Es el mayor".
3. Elaborar un programa que capture tres números enteros e imprima él número
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 conversión es F=9/5c +32.
5. Diseñar un programa que pida al usuario digitar un número e imprima el mes del
año de dicho número. Si el número digitado no es un mes del año se deberá
mostrar el mensaje “No es un mes del año”.
6. Crear un programa que imprima en un campo de texto los números impares que
se encuentren entre 1 y 30, así como su sumatoria.
7. Escribir un programa que permita sumar los números enteros de 1 a 100 usando
las estructuras: for, while, do while.
8. Realizar un programa que imprima todos los números primos entre 2 y 100
inclusive (nota: utilice la propiedad Multiline del control TextBox para imprimir
los resultados).
9. Diseñar un programa que permita capturar N números. Se debe imprimir el
número capturado en cajas de texto dependiendo si es par o impar, así como la
sumatoria de estos.
10. Escriba un programa que dado un número entero, diga si es o no es, un cubo
perfecto. Los números astromg o cubos perfectos, son aquellos que sumados los
cubos de cada uno de sus dígitos da el mismo número. 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. MÓDULOS Y PROCEDIMIENTOS
5.1 Módulos
Por omisión cada vez que se crea un módulo el modificador de acceso es friend.
59
Módulo….
60
Para declarar una variable pública (aquellas que están disponibles para todos los
procedimientos de la aplicación) en un módulo solo se necesita que al inicio del módulo
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.
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 paréntesis y separados por
comas), y siempre devuelven un valor con el nombre de la función. Los procedimientos
Sub también 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 código de un formulario, pero lo más aconsejable es
definirlos dentro de un módulo para que todos los elementos de un proyecto puedan
utilizarlos.
Se envía:
Label1.Text =nombre_función (12, “hola”)
Se recibe:
61
Para llamar al procedimiento Sub desde otro procedimiento se debe especificar
el nombre del procedimiento y el número de argumentos. El ejemplo sería el siguiente:
Se envía:
Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
62
Figura 5.4 Interfaz de usuario (MódulosProcedimientos).
Agregar módulo
63
Escribir código en el módulo
En el módulo dé doble clic sobre el nombre de este y entre las instrucciones Module y
End Module escriba el siguiente código:
Module mimódulo
64
End If
End If
End Sub
‘Finaliza el procedimiento Sub
End Module
Ejecutar el proyecto
65
Figura 5.6 Ejecución aplicación MódulosProcedimientos.
El objeto Date permite la manipulación de la fecha y la hora. Now y Today son dos
funciones básicas para el manejo del tiempo y la fecha. Now muestra en formato
numérico la fecha y la hora del sistema (Ej: 31/08/2010 16:14:20), mientras que Today
muestra en formato numérico la fecha del sistema (Ej: 31/08/2010). Con la función
Format se puede manejar diferentes formatos de presentación de fecha y hora
utilizando carácteres específicos. En la siguiente tabla se describe algunos caracteres
que permite la creación de formatos de fecha y hora definidos por el usuario:
Carácter Descripción
(/) Separador de fecha.
D Muestra una fecha con el formato de fecha larga. Por ejemplo: martes, 31 de
agosto de 2010.
d Muestra una fecha con el formato de fecha corta. Por ejemplo: 31/10/2010.
dd Muestra el día como un número con cero a la izquierda (por ejemplo: 01).
ddd Muestra el día de forma abreviada (por ejemplo: mar).
dddd Muestra el día de forma completa (por ejemplo: martes).
M Muestra el día y el mes de una fecha (por ejemplo: 31 agosto).
MM Muestra el mes como un número 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).
y Muestra el mes y el año (por ejemplo: agosto de 2010).
yy Muestra el año en formato numérico de dos dígitos.
yyy Muestra el año en formato numérico de cuatro dígitos.
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.
Carácter Descripción
(:) Separador de hora.
hh Muestra la hora como un número con ceros a la izquierda y en formato de
12 horas.
HH Muestra la hora como un número con ceros a la izquierda y en formato de
24 horas.
mm Muestra los minutos como un número con ceros a la izquierda.
ss Muestra los segundos como un número con ceros a la izquierda.
t Muestra la hora y los minutos en formato de 24 horas.
Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
67
Figura 5.7 Interfaz de usuario (FuncionesFechasHoras).
Escribir código
Seleccione el objeto boton y abra el editor de código y escriba el siguiente código:
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 función Format (fecha actual del sistema, tipo de formato) para dar
un formato específico de fecha u hora a las diferentes cajas de texto en la propiedad
Text. Cuando el usuario pulse el botón Ver formatos fecha/hora en tiempo de
ejecución mostrará en cada caja de texto el formato respectivo.
Ejecutar el proyecto
68
Figura 5.8 Ejecución aplicación FuncionesFechasHoras.
La clase Math de Visual Basic .NET contiene una serie de funciones trigonométricas,
logarítmicas y otras funciones matemáticas que sirven para realizar cálculos aritméticos,
en la siguiente tabla se muestran las funciones más comunes:
69
5.3.2.1 Ejemplo práctico funciones matemáticas
Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
70
Figura 5.9 Interfaz de usuario (FuncionesMatematicas).
Escribir código
Seleccione el objeto boton y abra el editor de código y escriba el siguiente código:
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)
Ejecutar el proyecto
Al ejecutarse el proyecto en el entorno de desarrollo de visual Basic.NET, se debe
visualizar:
71
Figura 5.10 Ejecución aplicación FuncionesMatematicas.
Visual Basic .NET contiene una serie de funciones para la manipulación de cadenas de
caracteres que sirven para realizar diferentes operaciones entre caracteres, en la
siguiente tabla se muestran las funciones más comunes:
Función Ejemplo
Chars(n): Permite obtener un carácter Dim micadena As String = "ABCDE"
específico de una cadena de Dim micaracter As Char
caracteres. micaracter = micadena.Chars(3)
micaracter = "D"
Length: Permite obtener la longitud Dim micadena As String = "ABCDE"
de de una cadena de caracteres. Dim Entero As Integer
entero=cadena.length
entero=5
Concat(texto1, texto,...., texton): Dim micadena As String = "hola"
Permite unir dos o más cadenas de Dim unircadena As String
caracteres. unircadena= String.Concat(micadena, " ",
"pueblo")
unircadena=” hola pueblo”
ToUpper: Convierte una cadena de Dim micadena As String = "hola"
caracteres de minúscula a mayúscula. micadena= micadena.ToUpper()
micadena=” HOLA”
ToLower: Convierte una cadena de Dim micadena As String = "HOLA"
caracteres de mayúscula a minúscula. micadena= micadena.ToLower()
micadena=” hola”
72
Remove(posición inicial, número de
caracteres): Permite eliminar una Dim micadena As String = "campoalegre"
cantidad determinada de caracteres micadena= micadena.Remove(2,3)
en una posición específica de una micadena=” caalegre”
cadena de caracteres.
Insert (posición de inserción,”cadena
de caracteres”): Permite insertar una Dim micadena As String = "campoalegre"
cantidad determinada de caracteres micadena= micadena.insert(4,” más ”)
en una posición específica de una micadena=” campo más alegre”
cadena de caracteres.
SubString((posición inicial, número
de caracteres): Permite obtener una Dim micadena As String = "campoalegre"
subcadena de una cadena de Dim subcadena As String
caracteres. subcadena= micadena.substring(5,4)
subcadena=”aleg”
Replace(cadena de caracteres,
carácter original, nuevo carácter): Dim micadena As String = "campoalegre"
Permite reemplazar una subcadena Dim Nuevacadena As String
determinada por otra subcadena nuevacadena =replace( m i c a d e n a , "e", "i")
especificada. nuevacadena=”campoaligri”
StrReverse(cadena de caracteres): Dim micadena As String = "campoalegre"
Devuelve una cadena de caracteres Dim Nuevacadena As String
invertida según el orden de los nuevacadena =StrReverse( m i c a d e n a )
caracteres de la cadena especificada. nuevacadena=”ergelaopmac”
Mid (cadena de caracteres, posición Dim micadena As String = "campoalegre"
inicial, numero de caracteres), Dim Nuevacadena As String
Mid (cadena de caracteres, posición nuevacadena =Mid( m i c a d e n a , 1 , 5 )
inicial): Devuelve una subcadena que nuevacadena=”campo”
a su vez contiene un número
especificado de caracteres de una Dim micadena As String = "campoalegre"
cadena de caracteres. Dim Nuevacadena As String
nuevacadena =Mid( m i c a d e n a , 5 )
nuevacadena=”alegre”
Len (cadena de caracteres): Devuelve Dim micadena As String = "ABCDE"
un entero que contiene el número de Dim Entero As Integer
caracteres de una cadena de entero=len(micadena)
caracteres. entero=5
TocharArray: Convierte una cadena Dim micadena As String = "campeon"
de caracteres en un arreglo de Dim arreglo() As char
caracteres. arreglo=mi cadena.ToCharArray()
arreglo={‘c’,’a’,’m’,’p’,’e’,’o’,’n’}
Split (cadena de caracteres, Dim cadena as String=”42,21,50,33”
delimitador): Devuelve un arreglo Dim subcadenas() As String
unidimensional que contiene un Subcadenas=Split(subcadenas,”,”)
número específico de subcadenas. Retorna={”42” “21” “50” “33”}
Trim (cadena): Elimina los espacios Dim cadena As String=” Colombia “
de ambos lados de una cadena de cadena=Trim(cadena)
caracteres.
Asc (carácter): Devuelve el numero Dim numero As Integer
Ascci de un carácter. numero=Asc(“a”) ‘Devuelve 97
Chr (numero): Devuelve el carácter Dim letra As char
Ascci de un número. letra=Chr(97) ‘Devuelve “a”
String.Copy (cadena): Copia una Dim cadena As String=”Hola”
cadena de caracteres. Dim copia as String
copia=String.Copy(cadena)
IndexOf (carácter a buscar): Devuelve Dim cadena as String=”Colombia”
la posición de un carácter específico. Dim posición As Integer
posición=cadena.IndexOf(“m”) ‘Devuelve 4
73
5.3.3.1 Ejemplo práctico funciones de cadena de caracteres
Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
74
Figura 5.11 Interfaz de usuario (FuncionesCadenas).
Escribir código
resultado.Text = texto.Text.Length
resultado.Text = texto.Text.ToUpper
resultado.Text = texto.Text.ToLower
resultado.Text = texto.Text.Remove(2, 5)
resultado.Text = texto.Text.Substring(2, 5)
resultado.Text = Mid(texto.Text, 2, 5)
75
Seleccione el objeto boton9 y abra el editor de código y escriba el siguiente código:
resultado.Text = StrReverse(texto.Text)
resultado.Text = Asc(texto.Text.Chars(5))
Ejecutar el proyecto
Al ejecutarse la aplicación se visualizará la figura 5.11, Se puede pulsar cada uno de los
botones para ver los resultados de la función especificada. Por ejemplo si se pulsa el
botón Concat, se obtendrá la siguiente figura:
76
5.4 Ejercicios de procedimientos
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 más dimensiones. Para referirse a un elemento de la
matriz se debe especificar el nombre de la matriz seguido de uno o más subíndices
encerrados entre paréntesis. Una colección se define por medio del objeto Collection
donde se hace referencia a un grupo de elementos relacionados como un objeto único.
Para acceder a los valores de una matriz, se debe utilizar un valor de índice
para especificar la posición a la que se desea acceder. También se pueden utilizar ciclos
para recorrer toda la matriz y acceder a todos los valores.
78
Establecer las propiedades de los objetos del interfaz de usuario
79
Escribir código
Seleccione el objeto boton y abra el editor de código y escriba el siguiente código:
Ejecutar el proyecto
80
Figura 6.2 Ejecución aplicación MatricesUnidimensionales.
Una matriz puede ser definida de dos, tres o más dimensiones, de cualquier tipo de dato.
Para crear una matriz de más de una dimensión en los paréntesis se separa cada
dimensión por medio de comas (,). El formato para declarar una matriz bidimensional
es:
Para acceder a los valores de una matriz bidimensionales, se debe utilizar los
dos subíndices, como también dos ciclos para recorrer toda la matriz y acceder a cada
uno de los valores.
81
6.2.1 Ejemplo práctico matrices bidimensionales
82
Escribir código
Ejecutar el proyecto
83
Si se digitan las palabras: ana, dedos, cali, azules, cadena, apoyo, alcanza,
capota, en el objeto txtpalabras se visualizarán las palabras digitadas y en el objeto
txtca todas las palabras que empiezan con CA. Se mostrará la siguiente figura:
6.3 Colecciones
Cuando se crea una colección, esta se puede manipular con las siguientes funciones:
Add: permite agregar un nuevo elemento a la colección.
Remove: permite eliminar un elemento que exista en la colección.
Clear: quita todos los elementos de una colección.
Count: cuenta cuantos elementos tiene una colección.
Diseñar una aplicación llamada Colecciones que permita adicionar, eliminar, buscar
elementos en una colección. Al realizar la operación de adición o eliminación se debe
visualizar como queda la colección y por la operación de búsqueda se debe mostrar la
posición donde se encuentra el elemento.
84
siguientes controles en el formulario en la posición deseada: 2 Label, 2 TextBox, 1
Button.
85
Escribir código
a) Antes de la apertura de la clase declare la colección para que esta sea publica a
cada uno de los procedimientos de la aplicación. Dé doble clic sobre el
formulario y busque Public class formulario y antes de este código escriba:
Dim coleccion As New Collection
86
txtbuscar.Text = "el elemento:" & dato & " existe en la posición:" & posicion
auxiliar = 1
End If
posicion = posicion + 1
Next
If (auxiliar = 0) Then
txtbuscar.Text = "No existe el elemento:" & dato
End If
Ejecutar el proyecto
87
Figura 6.8 Aplicación con los elementos de la colección.
88
Al pulsar el botón Elemento a Buscar, se mostrará la ventana para realizar la
búsqueda de un elemento en la colección. Se debe pulsar el botón tantas veces como
elementos se desee buscar. Se visualizará la siguiente figura:
89
6.4 Ejercicios Matrices
90
7. CONTROLES PARA INTERFAZ DE USUARIO
Hasta ahora se ha trabajo la interfaz de usuario con controles básicos del cuadro de
herramientas como lo han sido los objetos Label, TextBox y Button. En este capítulo
se programaran algunos de los controles más 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 código necesario para
interactuar con cada control, esto es transparente para el usuario.
7.1 LinkLabel
Realizar una aplicación llamada LinkLabel que permita a un usuario por medio de
controles LinkLabel conectarse a una página Web ó abrir una aplicación de Windows.
91
Figura 7.1 Interfaz de usuario (ControlLinkLabel).
Escribir código
Una característica del método Start de la clase Process es que se puede utilizar
para ejecutar diferentes aplicaciones, el método Start puede recibir dos argumentos: el
primer argumento se utiliza para ejecutar una aplicación específica sin necesidad de
configurar la ubicación de la aplicación. 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 ningún archivo específico.
Ejecutar el proyecto
4
URL significa Uniform Resource Locator, es decir, localizador uniforme de recurso.
Es una secuencia de caracteres, de acuerdo a un formato estándar, que se usa para
nombrar recursos, como documentos e imágenes en Internet, por su localización.
92
Figura 7.2 Ejecución vínculo Ir a Google.
93
Text Cambiar el color de la letra
Label2 Name lblletra
Text Cambiar el tamaño de la letra
ComboBox1 Name listacolores
ListBox1 Name listaletra
Form1 Name formulario
Text Controles ListBox y ComboBox
2. Seleccionar el control, dar clic sobre la flecha que aparece en la parte superior
derecha del control y allí escoger la opción Editar elementos para ver la
ventana Editor de la colección Cadena.
3. Dar doble sobre el formulario para ver la ventana de código del procedimiento
Sub formulario_Load. allí se debe escribir la siguiente línea por cada elemento
que se desee agregar:
nombre_del_control_ListisBox_o_ComboBox.Items.Add("nombre_del_elemento")
94
Figura 7.4 Ventana agregar elementos a un ListBox.
Pulse la opción Editar elementos para ver la ventana del Editor de la colección
Cadena.
Digite por cada línea el nombre de un color, para el ejemplo escriba: Negro,
Amarrillo, Verde, Azul, Rojo, Café, Rosado y Gris. La ventana del Editor quedaría de la
siguiente forma:
Figura 7.6 Ventana del Editor con los elementos agregados al control ListBox.
95
Al pulsar el botón Aceptar del Editor, el formulario tendrá la siguiente
apariencia:
Pulse la opción Editar elementos para ver la ventana del Editor de la colección
Cadena. Adicione los tamaños de letra de acuerdo a la siguiente figura:
96
Figura 7.9 Ventana del Editor con los elementos agregados al control ComboBox.
Escribir código
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
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
Ejecutar el proyecto
98
7.3 Checkbox y RadioButton
99
Text Cambiar color de fondo
RadioButton3 Name radio3
Text Cambiar color de texto
Panel1 Name panelcheckbox
Panel2 Naame panelradiobutton
Form1 Name formulario
Text Controles CheckBox - RadioButton
Escribir código
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
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.
If (Chequeo3.Checked) Then
txtcheckbox.ForeColor = System.Drawing.Color.Red
Else
txtcheckbox.ForeColor = System.Drawing.Color.Black
End If
d) Seleccione el objeto radio1, dé doble clic para abrir el editor del procedimiento
radio1_CheckedChanged y escriba el siguiente código:
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 código:
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 código:
If (opcion3.Checked) Then
txtradiobutton.BackColor = System.Drawing.Color.Aquamarine
Else
txtradiobutton.BackColor = System.Drawing.Color.White
End If
Ejecutar el proyecto
101
RadioButton con el texto Cambiar color de fondo, se obtendrá la siguiente figura:
102
Tabla 7.4 Propiedades de los controles de la aplicación ColoresPersonalizados.
Escribir código
a) Seleccione el objeto barra1, dé doble clic para abrir el editor del procedimiento
barra1_Scroll y escriba el siguiente código:
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 código:
c) Seleccione el objeto barra3, dé doble clic para abrir el editor del procedimiento
barra3_Scroll y escriba el siguiente código:
Ejecutar el proyecto
104
7.5 DataGridView
Un control DataGridView permite mostrar datos en una malla o tabla, estos datos
pueden ser con o sin orígen de datos externos (archivos de texto, bases de datos). Sin
especificar un orígen de datos, se pueden crear las columnas y filas que contendrán los
datos y agregarlas directamente al DataGridView. Con orígen de datos se pueden
establecer las propiedades DataSource y DataMember para enlazar el control
DataGridView a un orígen de datos y llenarlo de datos automáticamente.
105
Figura 7.15 Interfaz de usuario (DataGridView).
Escribir código
Seleccione el objeto boton, dé doble clic para abrir el editor del procedimiento
botón_click y escriba el siguiente código:
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 código sirve para rellenar el objeto tabla con los respectivos datos.
Utilizando el método 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 posición i igual a cero (0) hasta el numero de filas -1 del
objeto tabla y por cada fila se visualizarán 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
106
Figura 7.16 Ejecución aplicación DataGridView.
7.6 ListView
Crear una aplicación llamada ListView que permita a un usuario seleccionar un tipo de
comida rápida, como también seleccionar un tipo de bebida. El usuario deberá visualizar
en un control ListView un código, 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.
107
Tabla 7.6 Propiedades de los controles de la aplicación ListView.
108
Figura 7.18 Ventana Tareas de ComboBox.
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:
110
Figura 7.23 Interfaz de usuario final de la aplicación ListView.
Escribir código
Se declaran como publicas las variables valor, código, sumar e i. Estas podrán
ser utilizadas por cualquier procedimiento de la clase.
código = 1
111
Inicialmente se crea un objeto ítem al cual se le asigna espacio de memoria
(New) de tipo ListViewItem y recibe como parámetro la variable código. Utilizando la
función 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 código 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 posición 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 más el valor del SubItems (2), o sea el
valor de la comida. Se utilizó la función CDbl para convertir el valor numérico a
caracter. Por último se le asigna a la propiedad Text del objeto txttotal el valor de la
variable sumar.
112
f) Seleccione el objeto combocomidas, dé doble clic para abrir el editor del
procedimiento Sub combocomida_SelectedIndexChanged y escriba el
siguiente código:
Ejecutar el proyecto
113
comida Hamburguesa, empanada (2 veces) y como bebida Jugo, se obtendrá la
siguiente figura:
114
Al pulsar el botón Si, el formulario se apreciaría de la siguiente forma:
7.7 RichTextBox
Un control RichTextBox permite tener un texto en varias líneas. Todo el texto que
se muestra se establece con la propiedad Text. El control RichTextBox sirve para
manipular archivos; los métodos 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 método Find para buscar cadenas
de texto o caracteres específicos.
115
TextBox1 Name txtpalabra
Text En blanco
RichTextbox1 Name texto
Text Copiar cualquier texto
Button1 Name botonbuscar
Text Buscar coincidencias
Form1 Name formulario
Text Control RichTextBox
Escribir código
b) Dé doble clic sobre el formulario y cree después de un End Sub y antes del
End Class el siguiente procedimiento Sub.
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
Ejecutar el proyecto
117
Figura 7.29 Ejecución aplicación RictTextBox con la subcadena “la” encontrada.
Si se realiza una nueva búsqueda, 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.
7.8 TreeView
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 práctico TreeView
Elaborar una aplicación llamada TreeView que permita a un usuario visualizar las
unidades lógicas de un computador, además poder desplazarse por las carpetas de cada
unidad lógica.
119
Escribir código
imports System.IO
Public Class formulario
……
End Class
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 función
GetLogicalDrives de la clase Environment del espacio de nombres System. Se utiliza
la estructura For-Each para recorrer cada una de las unidades lógicas que contiene la
matriz unidades. Cada unidad es adicionada como un nodo al control TreeView
explorador.
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
121
7.9 FolderBrowserDialog
122
Escribir código
Seleccione el objeto boton, dé doble clic para abrir el editor del procedimiento
boton_Click y escriba el siguiente código:
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 cláusula With donde se realizan las siguientes
operaciones con el control FolderBrowserDialog unidades: .Reset() reinicia el control
unidades; .Description muestra una descripción 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 creación 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 diálogo se pulsa el botón Aceptar. Si se cumple la condición
se crea un objeto nroarchivos de tipo ReadOnlyCollection (crea una colección de solo
lectura) del espacio de nombres ObjectModel, a este, se le asigna una colección 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 diálogo 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 diálogo con el mensaje de error.
Ejecutar el proyecto
123
Figura 7.35 Ejecución aplicación FolderBrowserDialog.
124
Figura 7.37 Cuadro de diálogo con el total de archivos de una unidad seleccionada.
7.10 WebBrowser
125
Button5 Name botonrefrescar
Text Actualizar
Button6 Name botonnavegar
Text Navegar
ComboBox1 Name combopaginas
WebBrowser1 Name navegador
Label1 Name textopagina
Text Texto página
Form1 Name formulario
Text Control WebBrowse.
126
Escoja la opción Editar elementos y adicione los elementos que se muestran en
la siguiente figura:
Escribir código
navegador.GoBack()
navegador.Stop()
127
Se utiliza el método Stop() del objeto navegador para ir detener una página en
ejecución.
navegador.Navigate(Trim(combopaginas.SelectedItem))
textopagina.Text = combopaginas.SelectedItem
Se utiliza el método Navigate() del objeto navegador para ejecutar una página.
Recibe como parámetros la página seleccionada en la propiedad SelectedItem del
control combopaginas. Con la función Trim se quitan todos los espacios que existan.
Por otro lado, se le asigna a la propiedad Text del objeto textopagina la página
seleccionada.
Ejecutar el proyecto
128
7.11 Ejercicios interfaz de usuario
Equipos
Santafe
Barcelona
Inter
Milan
Aficiones
Acuaticas
Buceo
Natación
Profesiones
Ingenierias
Sistemas
Mecanica
Ciencias
Matematicas
Fisica
Mecánica
Electromagnetica
129
8. MENÚS EN FORMULARIOS
Los menús en una aplicación son el medio que tiene el usuario para interactuar con
dicha aplicación. 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. También se pueden
crear aplicaciones con menús que interactúen con varios formularios en una ventana,
estas aplicaciones son llamadas MDI (Interfaz de documentos múltiple), los ejemplos
clásicos son el procesador de texto Word ó la hoja de cálculo Excel de Microsoft. Las
aplicaciones MDI se reconocen por incluir menús con submenús para cambiar entre las
distintas ventanas o documentos. La interfaz de menús se trabaja con el control
MenuStrip que representa el contenedor de una estructura de menús de un
formulario conocidos como menús desplegables, además, 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
aplicación o un menú primario para otros elementos de submenú.
Preparar y diseñar el sistema: Decida los menús que necesita, dónde deben
aparecer en la interfaz, cuáles requieren submenús, etc.
Crear los menús y submenús: Defina los títulos, elementos de menú y
submenús mediante el Diseñador de menús.
Asignar las tareas que desee al sistema: Especifique las tareas que los menús
deben realizar, como mostrar formularios y cuadros de diálogo.
Generar el programa de menú: Ejecutar el programa para probar el sistema
de menús.
130
Crear la interfaz de usuario
131
Establecer las propiedades de los objetos de la interfaz de usuario
Pulse sobre el control menuprincipal para que aparezca sobre este el texto
Escriba aquí.
132
Allí escriba el nombre del menú &Archivo (Se utiliza el & para subrayar la
letra A y asociarlo a un método de acceso abreviado, más adelante se explicará cómo 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.6 Menú principal con los menús Archivo, Edición Formato y Nuevo.
Para el Menú Archivo adicione los submenús necesarios para obtener la siguiente
figura:
Para colocar la línea separadora, sitúese donde la desea crear y dé clic derecho,
seleccione la opción Insertar y allí escoja Separator, como se muestra en la siguiente
figura:
133
Figura 8.8 Operación para colocar una línea separadora en un Menú.
Para el Menú Edición adicione los submenús necesarios para obtener la siguiente
figura:
Para el Menú Formato adicione los submenús necesarios para obtener la siguiente
figura:
134
Crear teclas de acceso abreviado o rápido.
135
Escoja en el cuadro de verificación Alt y en clave la letra N. La ventana
quedaría de la siguiente forma:
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 más teclas de acceso rápido iguales.
Escribir código
Después de completar el diseño del menú se debe seleccionar cada uno de los menús
para agregarle el respectivo código de acuerdo a la operación que va a realizar.
a) Seleccione el menú Nuevo, dé doble clic para abrir el editor del procedimiento
NuevoToolStripMenuItem_Click y escriba el siguiente código:
136
Dim pregunta As String
pregunta = MsgBox("Desea guardar el Archivo actual ?:", MsgBoxStyle.YesNo)
If pregunta = "6" Then
cuadroguardarárchivo.Title = "Cuadro de Diálogo para guardar un archivo"
cuadroguardarárchivo.InitialDirectory = "C:\"
cuadroguardarárchivo.Filter = "Archivo de Texto(*.txt)|*.txt"
cuadroguardarárchivo.ValidateNames = True
cuadroguardarárchivo.ShowDialog()
Dim guardarárchivo As IO.StreamWriter
guardarárchivo = New IO.StreamWriter(cuadroguardarárchivo.FileName)
guardarárchivo.Write(ventana.Text)
guardarárchivo.Close()
ventana.Text = ""
Else
ventana.Text = ""
End If
b) Seleccione el menú Abrir..., dé doble clic para abrir el editor del procedimiento
y escriba el siguiente código:
137
IO.StreamReader (clase que se utiliza para leer líneas de información desde un archivo
de texto estándar) que guardará el nombre del archivo de texto asignado a la propiedad
FileName del control cuadroabrirárchivo. A la propiedad Text del objeto ventana se
le asignará el contenido del archivo utilizando el método ReadtoEnd que lee el archivo
desde el principio hasta el final. Si por el contrario no contiene información se mostrará
un mensaje informando que el archivo seleccionado esta vació.
d) Seleccione el menú Guardar como.., dé doble clic para abrir el editor del
procedimiento y escriba el siguiente código:
Esta opción permitirá guardar un archivo que previamente se había 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 código:
End
ventana.Undo()
Se utiliza la función Undo del control RichTextBox ventana para deshacer una
operación realizada anteriormente.
g) Seleccione el menú Rehacer, dé doble clic para abrir el editor del procedimiento
y escriba el siguiente código:
If ventana.CanRedo = True Then
If ventana.RedoActionName <> "Delete" Then
ventana.Redo()
End If
End If
Se utiliza la función Redo del control RichTextBox ventana, para rehacer una
operación previamente se habia eliminado. En este caso se valida si anteriormente se
habia eliminado un texto (CanRedo) y si esa operación tenia el nombre de eliminar
(Delete) utilizando la función RedoActionName.
h) Seleccione el menú Cortar, dé doble clic para abrir el editor del procedimiento
y escriba el siguiente código:
ventana.Cut()
i) Seleccione el menú Pegar, dé doble clic para abrir el editor del procedimiento y
escriba el siguiente código:
ventana.Paste()
j) Seleccione el menú Copiar, dé doble clic para abrir el editor del procedimiento
y escriba el siguiente código:
ventana.Copy()
139
k) Seleccione el menú Borrar, dé doble clic para abrir el editor del procedimiento
y escriba el siguiente código:
ventana.Clear()
Se utiliza la función 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 código:
ventana.SelectAll()
n) Seleccione el menú Fuente, dé doble clic para abrir el editor del procedimiento
y escriba el siguiente código:
cuadrodefuentes.ShowDialog()
ventana.SelectionFont = cuadrodefuentes.Font
o) Seleccione el menú Color - Texto, dé doble clic para abrir el editor del
procedimiento y escriba el siguiente código:
cuadrodecolores.ShowDialog()
ventana.SelectionColor = cuadrodecolores.Color
p) Seleccione el menú Color - Fondo, dé doble clic para abrir el editor del
procedimiento y escriba el siguiente código:
cuadrodecolores.ShowDialog()
ventana.SelectionBackColor = cuadrodecolores.Color
q) Seleccione el menú Estilo viñetas, dé doble clic para abrir el editor del
procedimiento y escriba el siguiente código:
140
ventana.SelectionBullet = True
Ejecutar el formulario
141
cascada, minimizar.
Para crear la interfaz de usuario se utilizarán cinco formularios. Uno de ellos será el
formulario principal o contenedor de los otros cuatro formularios los cuales realizarán
una labor específica cada uno.
142
Para el Menú Archivo adicione los submenús para obtener la siguiente figura:
Para el Menú Edicion adicione los submenús para obtener la siguiente figura:
Para el Menú Mis Formularios adicione los submenús para obtener la siguiente
figura:
143
Para el Menú Ventana adicione los submenús para obtener la siguiente figura:
144
Tabla 8.3 Propiedades de los controles del segundo formulario.
Escribir código
Seleccione el objeto controlfecha, dé doble clic para abrir el editor del procedimiento
controlfecha_ValueChanged y escriba el siguiente código:
txtformato.Text = controlfecha.Value
145
Tabla 8.4 Propiedades de los controles del tercer formulario.
Escribir código
Seleccione el objeto controlfecha, dé doble clic para abrir el editor del procedimiento
controlcalendario_DateChanged y escriba el siguiente código:
txtfecha.Text = controlcalendario.SelectionEnd.Date
146
Tabla 8.5 Propiedades de los controles del cuarto formulario.
Escribir código
Seleccione el objeto controlfecha, dé doble clic para abrir el editor del procedimiento
listaespañol_SelectedIndexChanged y escriba el siguiente código:
147
If listaespañol.GetItemChecked(0) Then
txtvaca.Text = "COW"
Else
txtvaca.Text = ""
End If
If listaespañol.GetItemChecked(1) Then
txtabeja.Text = "BEE"
Else
txtabeja.Text = ""
End If
If listaespañol.GetItemChecked(2) Then
txtoso.Text = "BEAR"
Else
txtoso.Text = ""
End If
If listaespañol.GetItemChecked(3) Then
txtpajaro.Text = "BIRD"
Else
txtpajaro.Text = ""
End If
If listaespañol.GetItemChecked(4) Then
txtperro.Text = "CAN"
Else
txtperro.Text = ""
End If
If listaespañol.GetItemChecked(5) Then
txtgato.Text = "CAT"
Else
txtgato.Text = ""
End If
148
Figura 8.25 Interfaz de usuario quinto formulario.
Antes de escribir el código para cada una de las opciones del menú, arrastre los objetos
OpenFileDialog y SaveFileDialog y cambie la propiedad Name de dichos objetos por
cuadroabrirárchivo y cuadroguardarárchivo respectivamente. Estos dos controles
servirán 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 código:
149
En la primera línea se crea un formulario llamado nuevoformulario al cual se le
asigna espacio de memoria de tipo formularioventana, en la segunda línea se asigna a
la propiedad MdiParent del objeto nuevoformulario la instancia actual del formulario
en ejecución (Me) y por último por medio del método 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 código:
Dado que una aplicación 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. Además 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
150
Se crea una variable llamada guardarárchivo de tipo IO.StreamWriter (clase
que se utiliza para escribir líneas de información en un archivo de texto estándar) que
guardará el nombre del archivo de texto asignado a la propiedad FileName del control
guardarárchivo. Utilizando el método Write se escribe en el archivo todo el contenido
existente en la propiedad Text del objeto nuevaventana.
d) Seleccione el menú Cerrar, dé doble clic para abrir el editor del procedimiento
y escriba el siguiente código:
Dim cerrarformulario As Form = CType(Me.ActiveMdiChild, Form)
If Not cerrarformulario Is Nothing Then
cerrarformulario.Close()
End If
e) Seleccione el menú Salir, dé doble clic para abrir el editor del procedimiento y
escriba el siguiente código:
End
g) Seleccione el menú Rehacer, dé doble clic para abrir el editor del procedimiento
y escriba el siguiente código:
h) Seleccione el menú Cortar, dé doble clic para abrir el editor del procedimiento
y escriba el siguiente código:
i) Seleccione el menú Pegar, dé doble clic para abrir el editor del procedimiento y
escriba el siguiente código:
151
nuevaventana.Paste()
j) Seleccione el menú Copiar, dé doble clic para abrir el editor del procedimiento
y escriba el siguiente código:
k) Seleccione el menú Formulario Fecha, dé doble clic para abrir el editor del
procedimiento y escriba el siguiente código:
m) Seleccione el menú Formulario Meses, dé doble clic para abrir el editor del
procedimiento y escriba el siguiente código:
n) Seleccione el menú Formulario Lenguaje, dé doble clic para abrir el editor del
procedimiento y escriba el siguiente código:
152
Si se pulsa la opción Nuevo del menú Archivo dos veces y se escogen las
opciones Formulario Fecha, Formulario Meses y Formulario Lenguaje, se obtendría
una figura similar a la siguiente:
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 código:
Me.LayoutMdi(MdiLayout.TileHorizontal)
b) Seleccione el menú Mosaico Vertical, dé doble clic para abrir el editor del
procedimiento y escriba el siguiente código:
Me.LayoutMdi(MdiLayout.TileVertical)
c) Seleccione el menú Cascada, dé doble clic para abrir el editor del procedimiento
y escriba el siguiente código:
Me.LayoutMdi(MdiLayout.Cascade)
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 función de minimizar (Minimized).
154
Con la opción Mosaico Vertical se visualizaría la siguiente figura:
155
8.4 Desactivar las opciones del menú en formularios MDI
Me.FormularioFechaToolStripMenuItem.Enabled = False
CType(MdiParent,formularioprincipal).FormularioFechaToolStripMenuItem.Enabled=True
Siguiendo con el ejemplo que se ha venido trabajando, también es posible añadirle una
barra o más barras de herramientas como se maneja en el entorno Windows, con el fin
de realizar de forma más rápida algunas tareas, como por ejemplo: copiar, pegar, cortar,
guardar, etc. Para añadir una barra de herramientas se utiliza el control ToolStrip .
Agregue dicho control a la aplicación MenuInterfazMultiple y cámbiele el texto de la
propiedad Name por barradeherramientas, se visualizará la siguiente figura:
156
Figura 8.34 Aplicación MenuInterfazMultiple con una barra de herramientas.
157
Seleccione cada uno de los elementos Button y modifíquele las siguientes
propiedades:
158
Dim activeChild As Form = Me.ActiveMdiChild
Dim nuevaventana As RichTextBox = CType(activeChild.ActiveControl, RichTextBox)
nuevaventana.Copy()
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.
160
Antes de poder realizar operaciones con este menú, seleccione el objeto
menuprincipal y en la propiedad ContextMenuStrip adicione el control
menucontextual.
Dé doble clic sobre cada opción del menú contextual para programar cada
operación. El código es el mismo que se utilizo en el menú principal o en la barra de
herramientas para dichas opciones.
161
9. GRÁFICOS Y ANIMACIÓN
En Microsoft Visual Basic .NET se pueden dibujar diferentes tipos de gráficos como
líneas, rectángulos, óvalos, cuadros, elipses con relleno o sin él. Además se pueden
crear efectos especiales con una secuencia de imágenes o gráficas para dar la sensación
de movimiento. En este capítulo conocerá los tipos de gráficos de Visual Basic .NET,
como también aprenderá a mover los controles o imágenes en forma horizontal, vertical
o diagonal utilizando las propiedades Left y Top, expandir o contraer los controles o las
imágenes manipulando las propiedades Height y Width. Por otro lado, también
conocerá como crear efectos de animación sencillos utilizando los controles
PictureBox, Timer o ImageList.
Un formulario es como un mantel el cual tiene unas dimensiones las cuales se miden en
pequeños 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 píxeles también se utilizan para
expresar el ancho y el alto de los gráficos. Para definir un cuadrado que tiene 100
píxeles de ancho y 100 píxeles de alto, cuya esquina superior izquierda se encuentra 10
píxeles a la izquierda y 10 píxeles 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 gráficas se pueden crear vacías (prefijo
draw) o con relleno de color (prefijo fill). Para dibujar o utilizar una función gráfica es
necesario crear un objeto Graphics y un objeto Pen (argumento cuando no se rellena
con ningún 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
imágenes gráficas. El objeto Graphics se puede crear en el evento Paint de un
formulario o control, también, llamando al método CreateGraphics, además se pueden
crear objetos Font y Color.
162
Crear los objetos Pen para dibujar segmentos de línea, curvas y los contornos de
formas.
Dim lapiz As System.Drawing.Pen
lapiz = New System.Drawing.Pen (System.Drawing.Color.Red)
163
Tabla 9.2 Propiedades de los controles de la aplicación CrearGraficas.
Escribir código
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 método CreateGraphics. La función DrawLine permite dibujar una
línea, dicho método contiene cinco parámetros: el primero es el color de la línea, 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.
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)
Ejecutar el proyecto
165
Establecer las propiedades de los objetos de la interfaz de usuario
Para el menú Líneas adicione los submenús para obtener la siguiente figura:
166
Figura 9.5 Menú Rectangulo/Cuadro con Submenús.
Para el menú Curvas adicione los submenús para obtener la siguiente figura:
167
Escribir código
a) Seleccione el menú Línea Normal, dé doble clic para abrir el editor del
procedimiento y escriba el siguiente código:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.DrawLine(Pens.Red, 10, 10, 220, 80)
b) Seleccione el menú Línea con extremos, dé doble clic para abrir el editor del
procedimiento y escriba el siguiente código:
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()
c) Seleccione el menú Línea discontinua, dé doble clic para abrir el editor del
procedimiento y escriba el siguiente código:
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 línea. En el ejemplo se dibuja una línea
discontinua basada en la matriz {3, 4, 10, 2}. Si se multiplican los elementos de la
matriz por el ancho del lápiz (3), se obtiene {9, 4, 30, 6}. Las líneas que se muestran
alternan sus longitudes entre 9 y 30 y los espacios alternan sus longitudes entre 4 y 6. A
la propiedad DashPattern (patrón de corte) del objeto lapiz se le asigna los valores de
dicha matriz.
d) Seleccione el menú Unión de Líneas, dé doble clic para abrir el editor del
procedimiento y escriba el siguiente código:
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()
e) Seleccione el menú Rectángulo sin relleno, dé doble clic para abrir el editor del
procedimiento y escriba el siguiente código:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.DrawRectangle(Pens.Red, 100, 100, 60, 80)
f) Seleccione el menú Rectángulo con relleno, dé doble clic para abrir el editor
del procedimiento y escriba el siguiente código:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.FillRectangle(Brushes.Red, 100, 100, 60, 80)
g) Seleccione el menú Cuadro sin relleno, dé doble clic para abrir el editor del
procedimiento y escriba el siguiente código:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.DrawRectangle(Pens.Blue, 100, 100, 80, 80)
h) Seleccione el menú Cuadro con relleno, dé doble clic para abrir el editor del
procedimiento y escriba el siguiente código:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.FillRectangle(Brushes.Red, 100, 100, 80, 80)
169
Con la función FillRectangule se puede crear un cuadro con relleno, solamente
se necesita que los valores de ancho y alto sean iguales.
i) Seleccione el menú Rectángulo con trama, dé doble clic para abrir el editor del
procedimiento y escriba el siguiente código:
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)
j) Seleccione el menú Cuadro con degradado, dé doble clic para abrir el editor
del procedimiento y escriba el siguiente código:
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)
k) Seleccione el menú Elipse sin relleno, dé doble clic para abrir el editor del
procedimiento y escriba el siguiente código:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.DrawEllipse(Pens.Blue, 100, 100, 60, 80)
La función DrawEllipse permite dibujar una elipse sin relleno. Dicho objeto
contiene cinco parámetros: 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 código:
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 función FillEllipse.
Dicho objeto contiene cinco parámetros: 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ú Círculo sin relleno, dé doble clic para abrir el editor del
procedimiento y escriba el siguiente código:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.DrawEllipse(Pens.Blue, 100, 100, 80, 80)
n) Seleccione el menú Círculo con relleno, dé doble clic para abrir el editor del
procedimiento y escriba el siguiente código:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.FillEllipse(Brushes.Blue, 100, 100, 80, 80)
o) Seleccione el menú Curva cerrada sin relleno, dé doble clic para abrir el editor
del procedimiento y escriba el siguiente código:
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)
p) Seleccione el menú Curva cerrada con relleno, dé doble clic para abrir el
editor del procedimiento y escriba el siguiente código:
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)
q) Seleccione el menú Torta sin relleno, dé doble clic para abrir el editor del
procedimiento y escriba el siguiente código:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.DrawArc(Pens.Aqua, 0, 0, 140, 70, 0,120)
La función DrawPie permite dibujar un grafico circular definida por una elipse
sin relleno. Dicho objeto contiene siete parámetros: 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 séptimo el ángulo final.
r) Seleccione el menú Torta con relleno, dé doble clic para abrir el editor del
procedimiento y escriba el siguiente código:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.FillPie(Brushes.Black, 0, 0, 140, 70,
La función FillPie permite dibujar un grafico circular definida por una elipse
con relleno.
Ejecutar el proyecto
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 combinación de Left y Top permite el movimiento de un
control en forma diagonal. Existen dos formas de realizar esta operación: manualmente
y automáticamente. De la forma manual se puede realizar haciendo un clic sobre un
botón cada vez que el usuario desea mover la figura. Dicho control contendrá el código
que permitirá realizar un movimiento específico. La forma automática 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.
Crear una aplicación llamada MovimientoControl que permita a un usuario por medio
de botones mover una imagen en forma horizontal y vertical en forma manual y
automática.
172
Crear la interfaz de usuario
Utilizando el cuadro de herramientas adicione al formulario los siguientes controles: 1
PictureBox, 1 Timer, 7 Button.
173
Escribir código
En este código 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.
reloj.Enabled=True
reloj.Enabled=False
f) Seleccione el objeto reloj, dé doble clic para abrir el editor del procedimiento y
escriba el siguiente código:
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
Ejecutar el proyecto
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. También se
puede realizar esta operación en forma manual y automática.
175
9.3.1 Ejemplo práctico expandir y contraer un control
176
Escribir código
f) Seleccione el objeto reloj, dé doble clic para abrir el editor del procedimiento y
escriba el siguiente código:
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 botón se
pulsó. Dependiendo de la respuesta realizará la acción correspondiente.
Ejecutar el proyecto
9.4 Animación
178
propiedades a los controles:
Escribir código
179
Integer.
reloj.Enabled = False
d) Seleccione el objeto reloj, dé doble clic para abrir el editor del procedimiento y
escriba el siguiente código:
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
Ejecutar el proyecto
180
2) Diseñar una aplicación llamada RotacionImagenes que cuando se pulse un botón se
realice la rotación de la luna en un cuadro.
181
Figura 9.16 Ventana Tareas de ImageList del control listadeimagenes.
182
Seleccione la imagen con el nombre MOON01 y pulse el botón Abrir, realice
esta operación hasta obtener la siguiente figura:
Escribir código
y=1
imagen.Image = listadeimagenes.Images.Item(0)
y=2
183
If y = 7 Then y = 1
imagen.Image = listadeimagenes.Images.Item(y)
End Sub
d) Seleccione el objeto boton, dé doble clic para abrir el editor del procedimiento y
escriba el siguiente código:
If interruptor = 0 Then
boton.Text = "Parar"
interruptor = 1
Else
boton.Text = "Girar"
interruptor = 0
End If
e) Seleccione el objeto reloj, dé doble clic para abrir el editor del procedimiento y
escriba el siguiente código:
If interruptor = 1 Then
rotar()
End If
Ejecutar el proyecto
184
3) Crear una aplicación llamada MoverTextoAleatorio que permita a un usuario al
pulsar un botón visualizar la impresión de un texto en un formulario aleatoriamente.
Además otros dos botones que realicen las siguientes operaciones: el primero debe
permitir limpiar el formulario y el segundo detener la impresión del texto.
185
Escribir código
grafica = Me.CreateGraphics
f) Seleccione el objeto reloj, dé doble clic para abrir el editor del procedimiento y
escriba el siguiente código:
Randomize()
valorx = Int(Rnd() * 200)
valory = Int(Rnd() * 200)
grafica.DrawString("Texto en movimiento aleatorio", fuente, Brushes.Blue, valorx,
valory)
186
fuente, el color de la fuente y las coordenadas x, y.
Ejecutar el proyecto
1. Escribir un programa que dibuje diez círculos concéntricos. Los círculos deben
estar separados por 5 píxeles utilizando DrawEllipse.
2. Realizar un programa que dibuje líneas de longitud y color aleatorio.
3. Diseñar un programa que dibuje un espiral utilizando DrawArc.
4. Hacer un programa que dibuje 10 palabras con fuente aleatoria de diferente
tamaño.
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 número de triángulos que deben dibujarse.
Dicho triángulos deben ser de diferente color.
9. Diseñar un programa que lea un par de coordenadas, el radio y dibuje el círculo,
además, de imprimir el diámetro, la circunferencia y el área del círculo.
10. Hacer un programa que simule un protector de pantalla. El programa deberá
dibujar 50 líneas al azar y después limpiar la pantalla y viceversa.
187
10. MANEJO DE EVENTOS (MOUSE – TECLADO)
Cuando un control u objeto realiza una acción se genera un evento. En los ejercicios de
los capítulos anteriores donde se ha utilizado el control Button se ha programado
código para que realice una operación específica 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 método 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 aplicación Windows Forms, la clase de datos de evento es
MouseEventArgs y el delegado de evento es MouseEventHandler
Las propiedades más comunes para el manejo de eventos del mouse son:
188
10.2 Ejercicios de eventos del mouse
Escribir código
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).
mover = True
Ejecutar el proyecto
190
Figura 10.2 Ejecución aplicación MoverBotonMouse.
Escribir código
191
moverraton = True
Ejecutar el proyecto
192
10.3 Eventos del teclado
Un evento de teclado ocurre cuando el usuario interactúa 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
información en un argumento de tipo System.Windows.Forms.KeyPressEventArgs,
el cual contiene métodos 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 información por medio de un argumento de tipo
System.Windows.Forms.KeyEventArgs, por ejemplo, Alt que indica si se presionó la
tecla "alt" análogamente se comportan las propiedades Control, Shift, etc.
193
Escribir código
Ejecutar el proyecto
194
2) Crear una aplicación llamada DetectarTecla que permita a un usuario escribir en una
primera caja de texto solo números y en una segunda caja de texto solo letras. Además
se debe permitir eliminar lo tecleado en la respectiva caja de texto, como también al
pulsar la tecla Enter en la primera caja de texto, se deberá enviar el foco a la segunda
caja de texto.
Escribir código
195
End If
If (e.KeyChar = Convert.ToChar(Keys.Enter)) Then
txtletra.Focus()
End If
Se utiliza la función Asc para determinar el valor Ascci del carácter pulsado
obtenido de la propiedad KeyChar. Los números de 0 a 9 se encuentran en el rango
Ascci entre 48 y 57. También se determina el valor cuando de pulsa la tecla Back
(retroceso) y Enter. Si la condición 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 diálogo MsgBox el mensaje “Solo se
pueden dígitar números”. Por otro lado, al pulsarse la tecla Enter se enviará el cursor
al objeto txtletra el cual es realizado con la función Focus().
Se utiliza la función Asc para determinar el valor Ascci del carácter pulsado
obtenido de la propiedad KeyChar. Las letras minúsculas se encuentran en el rango
Ascci entre 97-122 y las letras mayúsculas en el rango 65 - 90. También se determina el
valor cuando de pulsa la tecla Back. Si la condición 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 diálogo MsgBox el
mensaje “Solo se pueden dígitar letras”.
Ejecutar el proyecto
196
Si a continuación se trata de digitar cualquier tecla diferente de un número se
visualizará el siguiente cuadro de mensaje.
197
11. PROGRAMACIÓN ORIENTADA A OBJETOS CON VB.NET
198
una clase, se crea una instancia de esa clase. En general, los términos objetos e
instancias de una clase se pueden utilizar indiferentemente. Una clase es una colección
de objetos similares y un objeto es una instancia de una definición 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, terminándose con End Class. El cuerpo de la clase
incluye los atributos y los métodos.
Class Alumno
Cuerpo de clase (Atributos y métodos)
End Class
Toda clase debe contener una definición de variables o métodos 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 definición de una clase. Los
modificadores de acceso de Visual Basic.NET son: public (público), 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 sólo puede ser accedido por otros miembros de la
misma clase. Cuando no se utiliza ningún especificador de acceso, por defecto los
miembros de una clase son públicos.
Class Alumno
‘ variables de instancias
Private nombre_alumno As String
Private asignatura As String
Private curso As integer
‘ métodos 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
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
inicializaría 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
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 inicializaría con los mismos valores, la solución es crear un constructor
que tenga parámetros.
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
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
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
métodos totalmente nuevos, el programador puede indicar que la nueva clase puede
heredar las variables y los métodos 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 //clase base
201
11.3 Ejemplos prácticos de clases
202
Agregar nueva Clase
Para crear una nueva clase puede realizar alguno de los siguientes pasos:
a) Entre las instrucciones Public Class Miclase y End Class, escriba el siguiente
código:
203
Se declaran tres variables (alto, ancho, profundidad) para guardar los valores
digitados por el usuario respectivamente. Además 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 parámetros 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 parámetros, 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 parámetros 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 parámetros.
Public Function volumencaja() As Double
Return alto * ancho * profundidad
End Function
204
A la propiedad Text del objeto txtvolumen se le asigna el valor que retorne el
procedimiento volumencaja de la clase Miclase.
Ejecutar el proyecto
205
Figura 11.5 Formulario con el control TabControl.
206
Figura 11.8 Propiedad TabPages del control TabControl.
207
Figura 11.10 Propiedad Text de TabPage1 modificada.
208
TabControl1 Name fichas
Form1 Name formulario
Text Figuras utilizando Herencia
209
Figura 11.13 Interfaz usuario Ficha Circulo.
210
Figura 11.14 Interfaz usuario Ficha Cilindro.
Agregar Clases
211
Se declaran dos variables (x, y) de tipo Double para guardar los valores
digitados por el usuario respectivamente. Además, 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 parámetros de tipo Double y llama al
procedimiento fijapuntos.
fijapuntos: recibe dos parámetros 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.
Entre las instrucciones Public Class Circulo y End Class, escriba el siguiente código:
212
Por otro lado, se definen los siguientes procedimientos:
Entre las instrucciones Public Class Cilindro y End Class, escriba el siguiente código:
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
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 envía 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.
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 envía al constructor de la clase
Circulo los valores de valorradio, valorx y valory. Además se le envía 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.
215
Ejecutar el proyecto
216
Figura 11.17 Valores de la ficha Circulo.
11.4 Interfaces
Las Interfaces definen las propiedades, métodos y eventos que pueden implementar las
clases. Se pueden agregar nuevas características 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. Después de la
instrucción Interface, puede agregar una instrucción Inherits opcional que proporcione
una lista de una o varias interfaces heredadas. En la definición de una interfaz deben
existir únicamente instrucciones Event, Sub, Function, Property, Interface, Class,
Structure y Enum. Las interfaces no pueden contener código de implementación. Las
interfaces se pueden definir dentro de clases, módulos, interfaces y estructuras. De
manera predeterminada son públicas (Public), pero también 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 específica. Una instrucción Implements requiere una lista
separada por comas de los miembros de la interfaz que deben implementarse. La
especificación de un miembro de interfaz consiste en el nombre de la interfaz, que debe
especificarse en una instrucción Implements junto con la clase, un punto y el nombre
del evento, propiedad o función que se desea implementar.
.
Ejemplo:
Interface Película
Function video()
End Interface
Public class MisPeliculas implements Película
:::::::::::
Public Function video implements Película.video
<Código…..>
End Function
::::::::::::
End Class
Elaborar una aplicación llamada Interfaces que permita a un usuario digitar la base y la
altura y obtener el área de un Rectángulo y un Triángulo utilizando interfaces.
218
Label4 Name lblarearectangulo
Text Area del Rectángulo ((b*a)/2):
TextBox1 Name txtbase
Textbox2 Name txtaltura
TextBox3 Name txtareatriangulo
TextBox4 Name txtarearectangulo
Form1 Name formulario
Text Interface – Area Triángulo/Rectángulo
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 opción Agregar nuevo elemento… - Interfaz.
219
En el cuadro de texto Nombre cambie el nombre a la interfaz por
interfacefigura, luego pulse el botón Agregar para visualizar una nueva interfaz en el
editor de código y en la lista del Explorador de soluciones aparece un nuevo archivo
con el nombre de la interfaz.
Entre las instrucciones Public Interface y End Interface, escriba el siguiente código:
Agregar Clases
Entre las instrucciones Public Class Rectangulo y End Class, escriba el siguiente
código:
220
Constructor New: que recibe dos parámetros 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.
Seleccione el objeto botonarea, dé doble clic para abrir el editor del procedimiento
botonarea_Click y escriba el siguiente código:
221
Ejecutar el proyecto
Al ejecutar el proyecto y digitar los valores 8,14 en la respectiva caja de texto y pulsar
el botón Calcular Area, se visualizará la siguiente figura:
1. Crear un programa que contenga una superclase Figura donde se herede las
figuras de rectángulos, cuadrados, triángulos y círculos. El usuario podrá
escoger la posición, la figura y los caracteres de relleno que se usarán para
dibujar cada figura.
2. Realizar un programa utilizando herencia que decida si dos números son amigos.
Dos números son amigos si la suma de los divisores del primer número,
excluido él, es igual al segundo número y viceversa; es decir, si la suma de los
divisores del segundo número, excluido él es igual al primer número.
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 después.
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 número no mayor de 1000 e
imprima ese número 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 métodos
para calcular el perímetro y el área del rectángulo, los métodos deben verificar
que la longitud y la altura sean números flotantes entre 0.0 y 20.0. Deberá
escribir un programa que permita utilizar la clase Rectangulo.
6. Elaborar un programa que dibuje líneas, rectángulos, ó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. Diseñar un programa que permita capturar un número y por medio de clases
imprima el factorial de dicho número.
8. Realizar un programa que capture 10 números y utilizando clases imprima el
mayor y el menor de dichos números.
9. Escribir un programa que permita capturar tres valores (a, b, c) e imprima las
raíces de la cuadrática 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
Las bases datos más comunes son las relacionales y existen varios sistemas de
administración de bases de datos de ese tipo, algunos son: SQL Server, Access, Oracle,
MySQL, PostgresSQL, etc.
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.
Una base de datos orientada a objetos es un conjunto de clases que definen las
características y el comportamiento de los objetos que desarrollarán la base de datos.
Con una base de datos orientada a objetos, los objetos memorizados en la base de datos
contienen los datos como también las operaciones posibles con dichos datos.
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 Descripción
CREATE Permite crear nuevas bases de datos, tablas, campos e índices.
DROP Elimina bases de datos, tablas e índices.
Modifica las tablas agregando campos o cambiando la definición de los
ALTER
campos.
Comandos DML
Permite consultar registros de una base de datos que cumplan una condición
SELECT
determinada.
INSERT Inserta datos en una base de datos en una única operación.
UPDATE Actualiza o modifica los valores de los campos y registros especificados.
DELETE Elimina registros de una tabla de una base de datos.
Las cláusulas son operadores de modificación que sirven para definir los datos que se
desean seleccionar o renovar.
Cláusula Descripción
Sirve para especificar el orgen de datos (tabla) de la cual se van a
FROM
seleccionar registros.
Permite especificar condiciones que deben cumplir los registros a
WHERE
seleccionar.
GROUP BY Separa los registros seleccionados en grupos específicos.
HAVING Expresa la condición que debe cumplir cada grupo de registros.
ORDER BY Ordena los registros seleccionados.
224
Tabla 12.3 Operadores lógicos SQL.
Operador Uso
Evalúa dos condiciones y devuelve un valor de verdad sólo si ambas
AND
son ciertas.
Evalúa dos condiciones y devuelve un valor de verdad si alguna de
OR
las dos es cierta.
NOT Negación lógica. Devuelve el valor contrario de la expresión.
BETWEEN Permite especificar un intervalo de valores.
LIKE Realiza una comparación de un patrón.
IN Se utiliza para describir registros de una base de datos.
Devuelve Verdadero (True) si el conjunto de comparaciones de un
ALL
origen de datos es verdad.
Operador Uso
< Menor que
> Mayor que
<> Distinto de
<= Menor o igual que
>= Mayor o igual que
= Igual que
Función Descripción
AVG Calcula el promedio de los valores de un campo determinado.
COUNT Devuelve el número de registros de la selección.
SUM Suma todos los valores númericos de un campo determinado.
225
MAX Obtiene el valor más alto de un campo especificado.
MIN Obtiene el valor más bajo de un campo especificado.
DROP DATABASE permite eliminar una base de datos que previamente se había
creado. Su formato es:
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:
DROP TABLE permite eliminar una tabla que previamente se había creado. Su
formato es:
12.3.5 INSERT
12.3.6 ALTER
SQL ALTER permite insertar un nuevo campo en una tabla. Su formato es:
12.3.7 SELECT
227
c. Si se desea obtener los registros cuya identificación sea mayores o iguales a 150,
se debe utilizar la cláusula WHERE que especifica las condiciones que deben
reunir los registros que se van a seleccionar.
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.
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 ‘_’
(carácter).
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 identificación este entre el intervalo 110 y
150, se debe utilizar la cláusula BETWEEN, que sirve para especificar un
intervalo de valores.
12.3.8 DELETE
228
b. Para eliminar solamente los registros cuya identificación sea mayor de ‘180’.
12.3.9 UPDATE
a. Para actualizar el campo credito en 100000 para los registros cuyo nombre
empiecen por ‘A’.
b. Para actualizar el campo credito en -50000 para los registros cuya ciudad sea
igual a ‘Buga’.
229
Tabla 12.9 Información de la tabla pedidos.
Visual Basic .NET trabaj con la tecnología 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.
DataSet: conjunto de datos donde se pueden incluir una o más tablas con la
información acerca de las relaciones entre estas, y las restricciones que puedan
tener los datos.
230
DataTable: permite la manipulación de los datos en la memoria y realiza
operaciones como la exploración, ordenación, edición, filtrado, etc.
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 conexión con una base de datos. Se utiliza
SqlConnection para una conexión a SQL Server, OleDbConnection para una
conexión a Access y OracleConnection para Oracle.
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).
231
Tabla 12.10 Propiedades de controles proyecto ConexionASQLServer.
Control Propiedad Valor
DataGridView1 Name datos
Button1 Name botoncargar
Text Cargar registros tabla.
Label1 Name lblbd
Text Conexión a la base de datos bdlibrovbnet.mdf de SQL
SERVER.
Font True
Label2 Name lbltabla
Text Tabla : Clientes
Font True
Form1 Name formulario
Text Conexión a una base de datos SQL SERVER.
Escribir código
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
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 conexión a la base de datos bdlibrovbnet.mdf de SQL Server. La cadena de
conexión debe contener como mínimo los siguientes parámetros:
Ejecutar el proyecto
233
12.5.2. Conexión a SQL Server 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.
234
Explorador de servidores
235
conexión a la base de datos.
236
Figura 12.7 Estructura de la base de datos bdlibrovbnet.mdf.
237
Figura 12.9 Ventana Elegir orígen de datos.
238
Figura 12.11 Ventana Elegir la conexión de datos.
239
Cambie el nombre de la conexión que allí aparece por cadenaconexion y pulse el botón
Siguiente>, se visualizará la siguiente figura:
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 botón Finalizar para visualizar la siguiente figura:
240
DataMember el nombre de tabla seleccionada. Por otro lado, se creó el objeto
ClientesTableAdapter, el cual será el adaptador de datos para la conexión realizada.
Ejecutar el proyecto
NOTA: para este ejemplo se utilizará la base de datos SQL Server llamada
bdlibrovbnet y su tabla clientes (Ver anexo A, SQL Server).
241
Figura 12.17 Ventana Explorador de servidores.
242
Figura 12.19 Explorador de servidor - conexión a la base de datos SQL Server.
Del menú Datos seleccione la opción Agregar nuevo orígen de datos…, para
visualizar la siguiente figura:
Figura 12.20 Asistente para la configuración de orígenes de datos.
243
Figura 12.21 Ventana Elegir la conexión de datos.
244
Cambie el nombre de la conexión que allí aparece por conexionsqlserver y
pulse el botón Siguiente>, se visualizará la siguiente figura:
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 botón Finalizar para visualizar la siguiente
figura:
245
Figura 12.26 Proyecto con la base de datos y el orígen de datos agregados.
Dé clic sobre la tabla clientes, pulse el botón izquierdo del mouse y arrastre el
mouse hacia el formulario y automáticamente se crearán 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 orígen de datos), un BindingSource (ClientesBindingsource –
encapsula el orígen de datos y proporciona las funciones de navegación, filtrado,
ordenación y actualización de los datos), un TableAdapter (ClientesTableAdapter –
crea una nueva tabla con los datos devueltos), un AdapterManager
(ClientesAdapterManeger – administrador del adaptador de datos).
246
Ejecutar el proyecto
Con los iconos del objeto BindingSource se podrá desplazar por cada uno de los
registros de la tabla.
247
Al ejecutarse nuevamente la aplicación 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:
248
La interfaz de usuario queda como se muestra en la siguiente figura:
Escribir código
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
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
c) Dé doble clic sobre el formulario para abrir el editor de código 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
Se utiliza el método AddNew del objeto transaccion para crear un nueva fila en
el objeto registros.
250
Else
MsgBox("No se pudo guardar el registro", MsgBoxStyle.Critical)
End If
Si la fila del objeto registros no es vacía por medio del método Update del
objeto adaptador se guarda la nueva fila en la tabla clientes enviándole 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 vacía se muestra el mensaje “No se pudo guardar el registro”.
Ejecutar el proyecto
Figura 12.33. Cuadricula con una nueva fila para insertar datos.
251
Si se captura la información en cada campo de la cuadricula (1000, Chicles
Bacan, Cristian Vanegas, Cra 68 # 20-21, 4159854, Bogotá) y luego se pulsa el botón
Guardar nuevo registro, se insertarán los datos en la tabla clientes. En la siguiente
figura se aprecia el registro insertado:
252
Label3 Text Seleccione operador
Name lbloperador
Label4 Text Criterio de filtrado
Name lblcriterio
Label5 Text Su selección:
Name lblseleccion
Label6 Text resultado
Name lblresultado
Font/ Bold True
TextBox1 Name valorcampo
Button1 Name botonfiltrar
Text Filtrar registros
ComboBox1 Name listacampos
ComboBox2 Name listaoperadores
DataGridView1 Name registrosfiltrados
Form1 Name formulario
Text Filtrar registros de una tabla.
Escribir código
253
Figura 12.36 Ventana Editor del objeto listacampos.
254
Public class formulario
Dim texto as String
…….
End Class
lblresultado.Text = listacampos.SelectedItem.ToString
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; también se crea una variable
seleccion de tipo String que almacenará la instrucción SQL Select. En dicha
instrucción se selecciona todos los campos de la tabla clientes (Select * from clientes)
y se utiliza la cláusula 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 envía como parámetros los objetos seleccion (sentencia SQL) y
conexion (cadena de conexión), 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 botón 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.
256
Crear la interfaz de usuario.
257
Figura 12.45 Control MicrosoftReportViewer acoplado al formulario.
Diseñar el informe
Para diseñar el informe, pulse la flecha del lado superior derecha del objeto reporte
para ver la ventana Tareas de ReportViewer y escoja la opción Diseñar nuevo
informe.
258
Figura 12.47 Seleccionar Diseñar nuevo informe.
259
Figura 12.49 Asistente para la configuración de orígenes de datos.
260
Figura 12.51 Ventana Agregar conexión.
261
Figura 12.53 Ventana Microsoft Visual Studio.
Cambie el nombre de la conexión que allí aparece por conexion y pulse el botón
Siguiente>, se visualizará la siguiente figura:
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 botón Finalizar para visualizar la siguiente
figura:
Pulse los signos (+) para desplegar la tabla. Dé clic en Siguiente> para
visualizar la ventana de selección de tipo de informe.
263
Seleccione la opción Tabular o Matriz y dé clic en Siguiente> para visualizar
la ventana de diseño de tabla.
264
Dé clic en Siguiente> para visualizar la ventana de elección de diseño de la
tabla.
265
Seleccione la opción con el estilo que desee y dé clic en Siguiente> para
visualizar la ventana de finalización del asistente de informes.
Donde aparece el nombre del informe cámbielo por Informe Clientes y dé clic
en Finalizar> para visualizar el diseño final del informe.
266
En este momento se podrán modificar los textos de las etiquetas de los campos,
como también la longitud de los campos. Además, en el explorador de soluciones se
visualizará el informe agregado al proyecto.
Elija la ficha de diseño del formulario y dé clic sobre la flecha del objeto
reporte y seleccione la opción Elegir informe.
267
Ejecutar el proyecto
268
name boton
DataGridView1 Name tablapedidos
ComboBox1 Name lista
Name formulario
Form1 Text Relación de tablas con un
ComboBox.
Establecer la conexión
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, selecciónelo en el cuadro
de verificación y pulse el botón Aceptar.). Se visualizará la siguiente figura:
269
Dé clic en el botón Nueva Conexión. En la ventana que se visualiza elija como
orígen de datos Microsoft SQL Server y la base de datos bdlibrovbnet.
270
Por omisión esta seleccionada la opción Usar instrucciones SQL. Pulse
Siguiente> para visualizar la ventana de generación de instrucciones SQL.
Aquí puede realizar la selección de los datos que debería cargar el adaptador de
datos. Una forma es escribiendo en la ventana instrucciones SQL y la otra es pulsar el
botón Generador de consultas. Para el ejemplo, se pulsará el botón para visualizar la
siguiente figura:
271
Figura 12.74 Generador de consultas con la tabla clientes.
En esta nueva ventana seleccione la opción * (todas las columnas) o los campos
que desea visualizar (Si desea visualizar la consulta seleccionada pulse el botón
Ejecutar consulta). Se obtendrá la siguiente figura:
Figura 12.75 Generador de consultas con los campos seleccionados (tabla clientes).
272
Figura 12.76 Generador de consultas con la instrucción SQL.
273
Figura 12.78 Ventana Generar conjunto de datos.
Escribir código
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
274
sub, inicialice las siguientes variables u objetos globales:
Public class formulario
Dim vistapedidos As DataView
:::::::::
End class
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
d) Dé doble clic sobre el objeto boton para abrir el editor de código y escriba el
siguiente código:
e) Dé doble clic sobre el objeto lista para abrir el editor de código del
procedimiento lista_SelectedIndexChanged y escriba el siguiente código:
tablapedidos.DataSource = Nothing
Ejecutar el proyecto
Al ejecutarse el proyecto, se visualizará la figura 12.67, mostrándose en el objeto lista
el primer nombre de empresa de la tabla clientes (Si se desea ver los nombres de
empresas ordenados alfabéticamente cambie el valor de la propiedad Sorted del objeto
275
lista por True). Si selecciona un nombre de empresa y se pulsa el botón Ver Pedidos,
se visualizará en la cuadricula todos los registros que estén relacionados con la tabla
pedidos.
1. Crear un programa que permita realizar una conexión a una base de datos y
mostrar datos de una tabla en un control ListView.
2. Elaborar un programa que permita realizar una conexión 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. Diseñar 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 conexión 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 relación 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
relación de dos tablas.
276
13. LENGUAJE DE CONSULTA INTEGRADO (LINQ)
Un proveedor LINQ realiza una consulta y la traduce en comandos que podrá ejecutar el
orígen de datos, además convierte los datos del orígen en los objetos que obtiene los
resultados de la consulta. Visual Basic .NET tiene los siguientes proveedores LINQ:
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).
Select: Especifica la forma y el contenido de los datos que serán 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 código:
277
Dim consulta = From misclientes In Clientes
Select misclientes.nit, misclientes.empresa
Order By: Ordena una consulta de un orígen 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 código sería el siguiente:
Group By: Agrupa los resultados de una consulta por uno o más campos.
Combina dos colecciones con un campo común de un orígen de datos. Para
visualizar agrupadas y ordenadas las fecha de entrega de los pedidos de la tabla
Pedidos, el código sería:
Dim consulta = From pedidos In Pedidos Order By Pedidos.fechaentrega
Group By fecha = pedidos.fechaentrega
Into orden = Group
278
o Min: Obtiene el valor mínimo de los elementos de un orígen de datos.
o Sum: Realiza la suma de los valores de un orígen de datos.
Ejemplos:
Para definir y utilizar consultar con LINQ, deben realizar tres acciones:
Obtener el orígen de datos: Se debe especificar cuáles serán los datos que se
van a utilizar y donde están.
Crear la consulta: Se especifica la información que se desea obtener del orígen
de datos, estos, se pueden ordenar, filtrar, agrupar.
Ejecutar la consulta: La ejecución de la consulta es un proceso independiente
de la creación. Se puede ejecutar cuando este definida (ejecución inmediata) o se
puede guardar y ejecutarse posteriormente (ejecución diferida).
Ejemplo: Realizar una consulta que imprima todos los nombres que empiecen por la
letra R.
- Orígen de datos
279
- Creación de la consulta
- Ejecutar la consulta
280
Figura 13.1 Interfaz de usuario (ConsultaLinqTexto).
Escribir código
Se utiliza la función 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 cláusula 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 función Split. Con
la función 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 cláusula From.
Ejecutar el proyecto
282
13.4.2 Consulta LINQ a una matriz
283
Figura 13.3 Interfaz de usuario (ConsultaLinqMatriz).
Escribir código
Se crea una consulta utilizando la función 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
284
txtmenor.Text = menor
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 números ordenados en la propiedad
Text del objeto txtordenado.
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 números que cumplen la condición en la propiedad Text del objeto
txtmayores.
Ejecutar el proyecto
285
13.4.3 Consultar una base de datos SQL Server con LINQ To SQL
Diseñar una aplicación 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).
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.
2. Del icono seleccionar Agregar nuevo elemento… y busque la plantilla
Clases LINQ to SQL.
3. En el Explorador de soluciones situarse en el nombre del proyecto, dar clic
derecho, seleccionar la opción Agregar nuevo elemento… y busque la
plantilla Clases LINQ to SQL.
287
Figura 13.7 Ventana diseñador relacional de objetos LINQ to SQL.
288
Figura 13.9 Ventana Agregar conexión.
289
se mostrará la siguiente ventana:
Escribir código
Seleccione el objeto boton, dé doble clic para abrir el editor de código y escriba el
siguiente código:
Dim vista As New MiLinqToSQLDataContext
Dim consulta = From misclientes In vista.clientes Select misclientes
cuadricula.DataSource = consulta
290
Ejecutar el proyecto
13.4.4 Operaciones con una tabla de una base de datos SQL Server
NOTA: para este ejemplo se utilizará la base de datos SQL Server llamada
bdlibrovbnet (Ver anexo A, SQL Server).
291
Button3 Name botoneliminar
Text Eliminar registro
Button4 Name botonnuevo
Text Nuevo registro
Button5 Name botonguardar
Text Guardar nuevo registro
Label1 Name lblcliente
Text Seleccione cliente:
Font - Bold True
Label2 Name lblnit
Text Nit:
Label3 Name lblempresa
Text Empresa:
Label4 Name lblrepresentante
Text Representante:
Label5 Name lblciudad
Text Ciudad:
Label6 Name lbldireccion
Text Dirección:
Label7 Name lbltelefono
Text Teléfono:
Label8 Name lblregistros
Text Registros actuales de la tabla
Font - Bold True
TextBox1 Name txtnit
Enabled False
TextBox2 Name txtempresa
TextBox3 Name txtrepresentante
TextBox4 Name txtciudad
TextBox5 Name txtdireccion
TextBox6 Name txttelefono
ComboBox1 Name listaclientes
DataGridView1 Name cuadricula
Panel1 Name panel
Borderstyle FixedSingle
Form1 Name formulario
Text Operación con una base de datos – LINQ to SQL
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:
293
diseñador, se debe observar una figura similar a la siguiente:
Figura 13.18 Diseñador relacional de objetos con la tabla clientes.
294
Pulse sobre el link Agregar orígen de datos del proyecto, se mostrará el
Asistente para la configuración de orígenes de datos.
295
Figura 13.23 Ventana para elegir los objetos de base de datos.
Al pulsar en el signo (+) al lado del texto Tablas se visualizarán las diferentes
tablas de la base de datos, dé clic sobre la tabla clientes, además cambie el Nombre de
DataSet por conjuntodedatos y pulse el botón Finalizar para volver a modo diseño:
296
Figura 13.24 Control listaclientes con los campos empresa y nit seleccionados.
Escribir código
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.
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()
298
Utilizando el procedimiento SubmitChanges() se modifican los campos del registro
actual en la tabla. Si se pulsa el botón No se mostrará el mensaje “Registro no
modificado”.
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()
Ejecutar el proyecto
300
13.4.5 Relación entre dos tablas de una base de datos SQL Server
NOTA: para este ejemplo se utilizará la base de datos SQL Server llamada
bdlibrovbnet (Ver anexo A, SQL Server).
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 botón 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.28 Diseñador 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
verificación Utilizar elementos enlazados a datos y escoja la opción orígen de datos.
303
Figura 13.31 Ventana para elegir los objetos de base de datos.
Escribir código
Seleccione el objeto botonbuscar, dé doble clic para abrir el editor de código y escriba
el siguiente código:
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
Ejecutar el proyecto
305
13.4.6 Relación tablas con LINQ to SQL y DataGridView
NOTA: para este ejemplo se utilizará la base de datos SQL Server llamada
bdlibrovbnet (Ver anexo A, SQL Server).
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.
306
Pulse el link Explorador de servidores del diseñador relacional de objetos y
adicione la base de datos bdlibrovbnet.mdf y arrastre las tablas clientes y pedidos
hacia el diseñador, se debe observar una figura similar a la siguiente:
Figura 13.36 Diseñador relacional de objetos con las tablas clientes y pedidos.
307
Figura 13.38 Ventana para configurar orígen de datos.
4. Seleccione el icono Objeto y pulse el botón Siguiente para ver la ventana de elección
del objeto a enlazar.
308
Al tener el orígen de datos, seleccione el formulario y dé clic sobre el objeto
clientes del orígen de datos y arrástrelo hacia el formulario. Se obtendrá la siguiente
figura:
309
Escribir código
ClientesBindingSource.DataSource = vistadatos.clientes
Ejecutar el proyecto
310
13.4.7 Consulta LINQ to DataSet
NOTA: para este ejemplo se utilizará la base de datos SQL Server llamada
bdlibrovbnet (Ver anexo A, SQL Server).
311
Escribir código
Seleccione el objeto formulario, dé doble clic para abrir el editor del procedimiento
Formulario_Load y escriba el siguiente código:
Se crea una variable llamada conexion de tipo String que contendrá la cadena
de conexión a la base de datos de SQL Server. La cadena de conexión contiene el orígen
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")
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 común nit (Equals), con la condicion (where) de
que el nit sea igual a 100, además, 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 función AsEnumerable para obtener una colección de todas las filas de los datos,
como también la función Field para el especificar el tipo de dato de las columnas de
cada fila.
Ejecutar el proyecto
313
13.5 Ejercicios de consulta LINQ
1. Crear un programa que permita realizar una conexión 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. Diseñar 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 relación 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 más de tres productos.
314
14. APLICACIONES WEB ASP.NET
315
explorador, teléfonos móviles, etc...
Para iniciar un nuevo sitio Web desde la página de inicio de Visual Studio 2008, se
puede realizar uno de los siguientes pasos:
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.
317
Como se puede apreciar, el entorno de desarrollo es parecido al entorno de las
aplicaciones Windows Forms. En él encontrará:
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 diseñara 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 más numero del consecutivo). La
interfaz inicial de usuario del ejemplo debería mostrar el siguiente aspecto:
318
Figura 14.4 Interfaz de usuario inicial sitio Web PedidoWeb.
Después de colocar los controles u objetos a un formulario Web, se puede establecer sus
propiedades en la ventana Propiedades o en el Editor de código.
Para modificar las propiedades se selecciona el control en el formulario Web y
se cambia su configuración 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.
319
AutoPostBack True
DropDownList1 ID listabebida
AutoPostBack True
Button1 ID botoncomida
Text Adicionar Comida
Button2 ID botonbebida
Text Adicionar Bebida
GridView1 ID tablapedido
Form1 ID formulario
Document Title Restaurante la FRIKY
Default.aspx Nombre del archivo pagina.aspx
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 opción Editar Elementos… para ver la ventana Editor de la colección
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.
321
selecciónelo y dé clic en la flecha de la parte superior derecha del control para ver las
Tareas de GridView y escoja la opción formato automático… para ver la ventana
Autoformato y elija el formato que desee. Para el ejemplo, se escogió el formato
Multicolor.
Una vez se hayan establecido las propiedades del formulario Web y sus objetos, se
puede agregar el código que se ejecutará en respuesta a un evento especifico de cada
control.
3. Dé doble clic en el objeto ListBox llamado listacomida, para abrir el editor del
procedimiento listacomida_SelectedIndexChanged y escriba el siguiente
código:
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
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
5. Dé doble clic en el objeto Button llamado botoncomida, para abrir el editor del
procedimiento botoncomida_Click y escriba el siguiente código:
323
txtiva.Text = Val(txtsubtotal.Text) * 0.16
txttotal.Text = Val(txtsubtotal.Text) + Val(txtiva.Text)
6. Dé doble clic en el objeto Button llamado botonbebida, para abrir el editor del
procedimiento botoncomida_Click y escriba el siguiente código:
324
14.1.5 Ejecutar la aplicación Web
325
Al seleccionar como comida Arroz con Pollo y Ajiaco y como bebida Vino y
Cerveza, se visualiza la siguiente figura:
Para cerrar el sitio Web PedidoWeb o cualquier otro sitio web, estando en modo diseño
se pueden realizar los siguientes pasos:
La mayoría 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 diseño y
la programación son muy similares. En este capítulo se realizará una descripción breve
326
y un ejemplo práctico de los siguientes controles: CheckBoxList, ImageMap,
BulletedList, RadioButtonList, HyperLink, MultiView, View y los controles de
validación: RequiredFieldValidator, RangeValidator, CompareValidator,
CustomValidator, RegularExpressionValidator, ValidationSummary.
327
obtener la siguiente figura:
Escribir código
Dé doble clic en el objeto CheckBoxList llamado listafrutas, para abrir el editor del
328
procedimiento listafrutas_SelectedIndexChanged y escriba el siguiente código:
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
Ejecutar la aplicación
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 colección de zonas activas, donde cada zona puede ser definida como un
círculo, un rectángulo o un polígono y unas coordenadas que especifican la ubicación y
el tamaño de la zona activa. Cada zona activa puede ser un hipervínculo o un evento que
devuelve información.
330
Figura 14.15 Editor de la colección HotSpot.
Realice la misma operación 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 Propiedades
Bottom Left Right Top HotSpotMode PostBackValue
Segunda 100 100 200 0 PostBack imagen_robot
Tercera 200 0 100 100 PostBack imagen_celular
Cuarta 200 100 200 100 PostBack imagen_bicicleta
332
Escribir código
Dé doble clic en el objeto ImageMap llamado mapa_imagen, para abrir el editor del
procedimiento mapa_imagen_Click y escriba el siguiente código:
Ejecutar la aplicación
333
las propiedades: Text y Value. Text detalla lo que el control va a mostrar en la página.
Value devuelve un valor deseado al seleccionar un elemento. Este control responde al
evento clic para devolver datos del servidor.
334
Además agregue los siguientes elementos:
Propiedades
Text Value
MICROSOFT http://www.microsoft.com
GOOGLE http://www.google.com
JAVA http://www.java.sun
Por último pulse el botón Aceptar. La interfaz de usuario con las modificaciones
respectivas en las propiedades de cada control queda como se muestra en la siguiente
figura:
335
Ejecutar la aplicación
336
14.2.4 Control RadioButtonList
337
Figura 14.25 Editor de la colección ListItem con un elemento agregado.
Propiedades
Text Value
Microsoft http://www.microsoft.com
Google http://www.google.com
Java http://www.java.sun
Por último pulse el botón 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 aplicación ControlRadioButtonList.
Escribir código
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 también se le
adiciona dicho valor a la propiedad NavigateUrl.
Ejecutar la aplicación
339
Figura 14.28 Ejecución de la aplicación ControlRadioButtonList.
340
14.2.5.1 Ejemplo práctico control MultiView
b) Agregue cuatro (4) controles View y establezca las siguientes propiedades a los
controles:
341
Tabla 14.9 Propiedades de los controles View.
342
Figura 14.32 Interfaz del objeto primeravista.
343
Tabla 14.12 Propiedades de los controles del objeto terceravista.
344
Escribir código
Dim i As Integer
lblresultado.Text = "Los deportes que prácticas 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.
Dim i As Integer
lblresultado.Text = lblresultado.Text & "<br><br>Lo prácticas 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.
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 código:
Dim i As Integer
lblresultado.Text = lblresultado.Text & "<br><br>En la semana lo prácticas:<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.
Ejecutar la aplicación
346
Seleccione los deportes Baloncesto, Ciclismo y pulse el botón Siguiente para
visualizar la siguiente figura:
347
14.3 Controles para validar datos
En el cuadro de herramientas de una aplicación Web Asp.NET existe una ficha llamada
Validacion que contiene controles que sirven para validar información, es decir, que los
datos proporcionados en un control sean correctos de acuerdo a la información
solicitada. Como ejemplo de validación puede ser dejar en blanco un campo obligatorio,
escribir una contraseña dos veces no coincidentes, teclear un valor en un rango no
especificado. Los tipos de controles de validación son:
348
Tabla 12.14 Propiedades controles de la aplicación Controles_de_Validacion.
349
Escribir código
a) Dé doble clic sobre la página Web, para abrir el editor del procedimiento
Page_load y escriba el siguiente código:
350
ElseIf (args.Value = "U") Then
args.IsValid = True
ElseIf (args.Value = "V") Then
args.IsValid = True
Else
args.IsValid = False
End If
Ejecutar la aplicación
Como se puede apreciar, se muestran los mensajes de error en cada campo validado por
el respectivo control de validación. Si por el contrario se escriben los siguientes valores:
Cristian Vanegas, 8, S, 123456, cavm10@hot.com y se pulsá el botón Enviar, se
obtendría la página sin mensajes de error.
351
Figura 14.42 Ejecución Controles_de_Validacion con datos correctos.
352
15. ACCESO A BASES DE DATOS CON ASP.NET
Con las aplicaciones Web también es posible mostrar información de una base de datos.
En el capítulo 12 se hizo una breve descripción 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 capítulo se crearon aplicaciones Windows Forms donde se trabajo
con la base de datos SQL Server y se realizó la conexión a dicha base de datos, se
consultó y se realizarón operaciones con los registros de una o más tablas de la base de
datos, como también se diseño un informe de los registros de una tabla.
ASP.NET contiene controles que permiten realizar operaciones con los orígenes de
datos que administran las tareas que se pueden realizar con una base de datos. Estos no
representan ningúna interfaz de usuario, sino que actúan como intermediarios entre los
datos y los demás controles de la página Web ASP.NET. Dichos controles habilitan un
amplio conjunto de funciones para recuperar y modificar datos, entre las que se incluyen
la conexión, consulta, actualización, eliminación y la inserción. ASP.NET incluye los
siguientes:
Control descripción
OleDbDataAdapter 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.
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).
354
Escribir código
b) Dé doble clic sobre el objeto boton para abrir el editor de código del
procedimiento boton_Click y escriba el siguiente código:
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 envía como parámetros los objetos seleccion (datos a mostrar) y conexion
(cadena de conexión), 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 asignársele la tabla de datos, por otro lado,
se enlaza al objeto cuadriculadatos el orígen de datos (DataBind()) y por último se
establece a la propiedad Text del objeto lblnumeroregistros el texto actual del objeto
unido al número 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
conexión.
Ejecutar la aplicación
356
15.2.2 Conexión a una base de datos con un control GridView
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).
357
Figura 15.5 Asistente para la configuración de orígenes de datos.
Escoja el objeto Base de datos y especifique como nombre del identificador del
orígen de datos orígendedatos y pulse el botón Aceptar, para visualizar la ventana de
elección de la conexión de datos.
Pulse el botón Nueva conexión… para ver la ventana de Agregar conexión, allí
dé clic sobre el botón Examinar y busque la base de datos bdlibrovbnet.mdf. Se
obtendrá la siguiente figura:
358
Figura 15.7 Ventana Agregar conexión con la base de datos seleccionada.
359
Figura 15.9 Ventana Guardar cadena de conexión.
360
Figura 15.11 Ventana Consulta de prueba.
361
Ejecutar la aplicación
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).
Explorador de servidores
363
Figura 15.17 Ventana Agregar conexión con la base de datos bdlibrovbnet.mdf.
364
Figura 15.19 Ventana de las Tareas de FormView.
|Escoja el objeto Base de datos y especifique como nombre del identificador del
orígen de datos conexiondedatos y pulse el botón Aceptar para visualizar la ventana de
Elegir la conexión de datos. De la lista que allí aparece escoja la base de datos
bdlibrovbnet.mdf. La ventana quedaría de la siguiente forma:
365
Figura 15.21 Ventana Elegir la conexión de datos.
366
Figura 15.23 Ventana Configurar la instrucción Select.
367
Seleccione el esquema Multicolor y pulse el botón Aceptar. La interfaz de
usuario queda como se muestra en la siguiente figura:
Ejecutar la aplicación
368
15.2.4 Insertar un registro en una tabla
Establecer la conexión
369
Figura 15.29 Ventana para elegir el orígen de datos.
370
Figura 15.31. Ventana Guardar cadena de conexión.
Por otro lado, pulse el botón Avanzadas… para ver la ventana de opciones de
generación 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 generación SQL avanzadas.
372
Figura 15.35 Interfaz de usuario InsertarRegistrosWeb.
Ejecutar la aplicación
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.
Registro insertado
374
15.2.5 Modificar un registro de una tabla
Establecer la conexión
375
Ahora dé clic sobre la opción 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 opción Button.
376
Ejecutar la aplicación
Con los link numéricos busque el registro que se inserto en el ejemplo anterior y
pulse el botón Editar. Se observaran dos nuevos botones Actualizar y Cancelar.
Modifique el contenido del campo empresa por el texto Las acacias.
377
Figura 15.45 Registro modificado de la tabla clientes.
Establecer la conexión
378
Figura 15.46 Ventana diseño sitio Web EliminarRegistrosWeb.
379
Figura 15.48 Interfaz de usuario EliminarRegistrosWeb.
Ejecutar la aplicación
380
Figura 15.50 Formulario Web con el registro a ser eliminado.
Figura 15.51 Formulario Web al ser eliminado el registro con nit 20000.
381
15.2.7 Filtrar registros de una tabla
Establecer la conexión
382
Figura 15.54 Ventana para elegir el orígen de datos.
383
Figura 15.56 Ventana Guardar cadena de conexión.
Por otro lado, pulse el botón WHERE… para ver la ventana Agregar cláusula
WHERE. Realice lo siguiente: de la lista Columna escoja el campo nit; de la lista
Operador seleccione el operador >=; de la lista Orígen el texto None; y en las
propiedades del parámetro el valor 500. Se obtendrá la siguiente figura:
384
Figura 15.58 Agregar cláusula WHERE.
385
Figura 15.60 Ventana diseño sitio Web FiltrarRegistrosWeb.
386
La interfaz de usuario queda como se muestra en la siguiente figura:
Ejecutar la aplicación
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.
Para seleccionar la tabla y diseñar el informe, pulse la flecha del lado superior derecha
del objeto informeregistros para ver la ventana Tareas de ReportViewer y escoga la
opción Diseñar nuevo informe.
388
Figura 15.66 Selección Tareas de ReportViewer – Diseñar nuevo informe.
389
Figura 15.68 Ventana Elegir la conexión de datos.
390
Cambie el nombre de la conexión que allí aparece por conexioninforme y pulse
el botón 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.
391
Dé clic en Siguiente> para visualizar la ventana de selección de tipo de
informe. Seleccione la opción Tabular.
392
Pulse el botón Siguiente> para visualizar la ventana Elegir el diseño de la
tabla. Seleccione la opción Escalonado.
393
Pulse el botón Siguiente> para visualizar la ventana Finalización del asistente
de informes. En el campo Nombre del informe escriba el texto
informe_registros_clientes.
394
Figura 15.79 Ventana con el informe informe_registros_clientes elegido.
Al ejecutarse el sitio Web, se visualizará la página con el informe de los registros que
contiene la tabla clientes. Puede ajustar el tamaño del reporte en la página en modo de
diseño.
Figura 15.80 Página Web con el informe de los registros de la tabla clientes.
395
15.2.9 Visualizar los registros de dos tablas relacionadas
396
Establecer la conexión
397
Pulse el botón Aceptar. Se visualizará la ventana Elegir la conexión de datos.
Realice la conexión de datos de la base de datos bdlibrovbnet.mdf. Se obtendrá la
siguiente figura:
398
Pulse el botón Siguiente para visualizar la ventana de Configurar la
instrucción Select. Seleccione la tabla Clientes y en la pestaña Columnas pulse el
cuadro de verificación *.
399
Pulse el botón Aceptar para volver a modo diseño. Ahora seleccione el objeto
datospedidos y pulse en la flecha de la parte superior derecha para ver las Tareas de
GridView. Escoja la opción 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.
400
Dé clic en el botón Siguiente para ver la ventana Guardar la cadena de
conexión. Cambie el nombre de la cadena de conexión por cadenapedidos, se obtendrá
la siguiente figura:
401
A continuación pulse el botón WHERE para visualizar la ventana de Agregar
cláusula WHERE.Y realice lo siguiente: de la lista Columna escoja el campo nit; de la
lista Operador seleccione el operador =; de la lista Orígen Control; y en las
propiedades del parámetro en Id. De control seleccione listaempresas. Se obtendrá la
siguiente figura:
402
Pulse el botón Aceptar para ver nuevamente la ventana Configurar instrucción
Select. En dicha ventana pulse el botón Siguiente para ver la ventana de Consulta de
prueba. Por último pulse el botón Finalizar para volver a modo diseño.
403
15.3 Ejercicios bases de datos con ASP.NET
1. Crear un sitio Web que permita realizar una conexión a una base de datos y
mostrar datos de una tabla en un control Repeater
2. Elaborar un sitio Web que permita realizar una conexión a una base de datos y
actualizar un campo númerico por el valor actual más 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. Diseñar un sitio Web que permita visualizar los registros de una tabla en un
control ListView. El usuario deberá visualizar cinco registros por cada página
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 conexión 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 relación 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
relación de dos tablas.
404
16. SERVICIOS WEB
Para habilitar un servicio web con ASP.NET de debe crear un archivo con una
extensión de nombre de archivo .asmx, declarar un servicio web en ese archivo y
definir los métodos de los servicios web.
Desde la página de inicio de Microsoft Visual Studio cree un nuevo proyecto, puede
seguir los siguientes pasos:
405
2. Hacer clic en la opción Archivo del menú y seleccionar Nuevo sitio Web…
Figura 16.1 Ventana para crear un servicio Web desde Visual Basic.NET.
406
Dé clic sobre el icono IIS local y en la ventana derecha seleccione el objeto
Sitio web predeterminado. Se observará la siguiente figura:
407
Figura 16.5 Nuevo sitio web con la ubicación del servicio Web.
408
Escribir código en el servicio Web
El código será la interfaz del servicio Web a los que un usuario tendrá acceso desde una
aplicación Web. Entre Class y End Class se deben declarar cada uno de los
procedimientos que utilizará el servicio Web para realizar una tarea específica. Los
procedimientos de un servicio Web se estructuran de la siguiente manera:
<WebMethod ()>: Entre los paréntesis se puede hacer un comentario del servicio Web,
<WebMethod (Description:=“Servicio Web para consultar una base de datos”)>
409
Ejecutar el Servicio Web
410
En el campo de texto escriba el número 7 y dé clic en el botón Invocar para
realizar el proceso del procedimiento numerosprimos.
411
Tabla 16.1 Propiedades de controles del sitio Web NumerosPrimosWeb.
Para agregar el servicio Web a la aplicación Web seleccione el menú Sitio Web y
escoja la opción 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
omisión el texto localhost (cámbielo si desea), pulse el botón Agregar referencia para
volver a la página Web. En el Explorador de soluciones se podrá visualizar el servicio
Web integrado al proyecto
Escribir código
Dé doble clic sobre el objeto boton para abrir el editor de código del procedimiento
boton_Click y escriba el siguiente código:
414
Dim servicio As New localhost.Service
txtresultado.Text = servicio.numerosprimos(txtnumero.Text)
415
ÍNDICE
416
From, 278 MonthCalendar, 145
FROM, 224 MouseClick, 188
FromArgb, 104 MouseDoubleClick, 188
Funciones de cadenas de caracteres, 72 MouseDown, 188
Funciones Matemáticas, 69 MouseEnter, 188
Function, 61 MouseHover, 188
GetItemChecked, 148 MouseLeave, 188
GraphicsPath, 169 MouseMove, 188
GROUP, 224 MouseUp, 188
Group By, 279 MouseWheel, 188
HAVING, 224 movenext, 127, 128
Height, 175 MultiView, 342
Herencia, 198, 201 NamesSpace, 410
HotSpotMode, 332 Not, 33
If (operador)., 39 NOT, 225
IIF., 39 Objetos, 198
ImageMap, 331 OleDataAdapter, 231
IN, 225 OleDbCommand, 231
IndexOf, 73 OleDbConnection, 231
InitialDirectory, 137 OleDbDataAdapter, 355
Insert, 73 Operadores de comparación, 225
INSERT, 224 Operadores Lógicos, 33
Integrated, 10 Operadores lógicos S.Q.L, 224
Integrated Security, 233, 357 Operadores Relacionales, 32
Join, 279 Or, 33
KeyCode, 194 OR, 225
KeyDown, 193 OracleCommand, 231
KeyPress, 193 OracleConnection, 231
KeyUp, 193 OracleDataAdapter, 231
Left, 172 OracleDbDataAdapter, 355
Len, 73 ORDER, 224
Length, 72 Order By, 279
Lenguaje de Consulta Estructurado, 223, OrElse, 33
225, 229 Orientada a objetos, 223
LIKE, 225 origen de datos, 354
LinkLabel., 91 Palabras clave, 36
LINQ, 278 Paste, 139
LINQ to DataSet, 278 Pie, 163
LINQ to Objects, 278 Point, 163
LINQ to SQL, 278 Poligono, 163
LINQ to XML, 278 Polimorfismo, 198
ListBox, 93 PostBack, 332
ListView, 107 PostBackValue, 332
Matrices, 78 pow, 69
Max, 69, 279 private, 199
MAX, 226 Probar la conexión, 235
MaximumValue, 352 Procedimientos, 61
MDI, 130 Programación Orientada a Objetos, 198
Mensaje, 198 Propiedad, 198
Menú principal, 15, 319 protected, 199
menú Ventana, 153 public, 199
Menús, 130 Punto, 163
Método, 198 RadioButton, 99
Mid, 73 RadioButtonList, 338
min, 69 RangeValidator, 350
Min, 280 ReadtoEnd, 138
MIN, 226 Recta, 163
MinimumValue, 352 Rectangle, 163
Modificar la cadena de conexión:, 235 Rectangulo, 163
Módulos, 59 Redo, 139
417
RegularExpressionValidator, 350 System.Linq, 278
Remove, 73 TableAdapter, 246
Replace, 73 tan, 69
RequiredFieldValidator, 350 Timer, 172
RichTextBox, 115 Tipos de datos, 26
round, 69 TocharArray, 73
RowFilter, 276 ToLower, 72
SDI, 130 Toma de desiciones, 37
Select, 278 Top, 172
SELECT, 224, 227 ToUpper, 72
Select – case (Seleccionar caso), 42 TrackBar, 102
SelectedItem, 255, 256 TreeView, 118
SelectedValue, 276 Trim, 73
SelectionBullet, 141 Try-Catch, 117
Sentencia If (Si), 37 tuplas, 223
Sentencia If- Else (Si - Sino), 38 Undo, 139
Sentencias básicas S.Q.L, 226 UPDATE, 224
servicio web, 407 Val, 31
sin, 69 ValidationExpression, 352
SOAP, 407 ValidationSummary, 350
Sobrecarga, 200 ValidationType, 352
Split, 73 ValueMember, 276
SqlCommand, 231 ValueToCompare, 352
SqlConnection, 231 variable, 25
SqlDataAdapter, 231 Ventana de depuración de errores, 19, 320
SqlDataSource, 355 Ventana de propiedades, 18, 320
SqlDbDataAdapter, 355 View, 342
sqrt, 69 Visual Basic .NET, 10
Str, 31 Visual Studio .NET, 10
StreamWriter, 137 VScrollBar, 102
String.Copy, 73 WebBrowse, 125
StrReverse, 73 Where, 279
Sub, 61 WHERE, 224
SubString, 73 While, 48
Sum, 280 Width, 175
SUM, 225 Windows Authentication, 422
System.Data.SqlClient, 232, 356 XmlDataSource, 355
System.Drawing, 162 Xor, 33
418
BIBLIOGRAFÍA
INFOGRAFÍA
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-a-
datos.aspx
http://www.es-asp.net/tutoriales-asp-net/tutorial-61-96/enlazando-a-bases-
de-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-9eda-
44a5-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 versión de Visual
Studio.
A.1 Conectarse a SQL Server.
Cuando se instala SQL Server, en los programas existe una opción 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.
1. Server Name: Por omisión aparece el nombre del servidor donde fue instalado
SQL Server.
2. Authenticacion: Por omisión aparece Windows Authentication, la otra opción
es SQL Server Authentication. Si selecciona SQL Server Authentication, se
deberá digitar el User Name y el Password creado cuando se realizo la
instalación de SQL Server.
420
3. Pulsar el botón Connect.
421
Figura A.5 Ventana para crear una nueva base de datos.
422
Figura A.7 Base de datos bdlibrovbnet con sus elementos creados inicialmente.
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.
423
Seleccione New Table para ver la ventana de diseño de la tabla, como se aprecia
en la siguiente figura:
Para agregar los campos a la tabla en Column Name escriba nit, en Data Type
seleccione nvarchar (50) (campo alfanumérico).
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 ( ), la
figura quedara:
Figura A.11 Ventana con los campos de la tabla y nit como llave primaria.
425
Pulse el botón Yes para obtener la ventana para escoger el nombre Choose
Name.
Escriba como nombre de la tabla clientes y pulse el botón 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 continuación:
426
Figura A.16 Estructura tabla ventas.
Al finalizar de crear las tablas, la estructura de la base de datos con las tablas
quedaría como se aprecia en la siguiente figura:
Cuando se selecciona una tabla y se dá clic derecho se visualiza la ventana con las
diferentes opciones que se pueden realizar como son:
427
Figura A.18 Opciones para la manipulación de una tabla.
428
En este momento se podrá realizar instrucciones SQL para manipular la tabla
clientes. Al pulsarse el icono (Show SQL Pane) se visualizará un panel para digitar
instrucciones SQL. Por omisión se muestra la siguiente ventana:
429
Figura A.23 Ventana al Aceptar la verificación de sintaxis SQL.
Para ejecutar la instrucción SQL deberá dar clic en el icono (Execute SQL),
se vera la siguiente figura:
Ahora se deberán llenar con datos las tablas pedidos, productos y ventas de
acuerdo a las siguientes figuras:
430
Figura A.25 Tabla pedidos con datos insertados.
Para crear un diagrama de una base datos seleccione Database Diagrams de la base de
datos bdlibrovbnet, de clic derecho y seleccione la opción New Database Diagram.
Para ver la ventana de adición de tablas:
431
Figura A.28 Ventana Add Table de la opción New Database Diagram.
Seleccione una tabla y pulse el botón Add. Realice esta misma operación con
cada una de las tablas restantes. Al terminar pulse el botón Close para observar la
siguiente figura:
Para crear la relaciones entre las tablas seleccione el campo nit de la tabla
cliente, de clic en el mouse y manténgalo pulsado y arrástrelo 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.
433
Fgura A.32 Ventana de diagramás con las relaciones entre tablas.
Pulse el botón Yes para obtener la ventana para escoger el nombre Choose
Name.
434
Escriba como nombre del diagrama relaciontablas y pulse el botón OK. Se
visualizará la ventana para guardar los cambios realizados.
Figura A.35 Ventana para guardar los cambios realizados en la base de datos.
Una vista es un espejo de cierta información 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 opción New View. Para ver la ventana de adición de vistas:
435
Figura A.37 Ventana para adicionar tablas a una vista.
Adicione las tablas clientes y pedidos. Al terminar pulse el botón Close para
visualizar la siguiente figura:
436
Figura A.39 Ventana de ejecución de la vista creada.
Pulse el botón Yes para obtener la ventana para escoger el nombre Choose
Name.
437
Escriba como nombre de la vista vista_clientes_pedidos y pulse el botón OK.
Se visualizará la siguiente figura:
438