Está en la página 1de 334

Manejo de datos con

Visual Basic y ASP .NET

Carlos Alberto Vanegas


Ingeniero de Sistemas
Especialista en Ingeniería de Software
Maestría en Ingeniería de Sistemas
Profesor cátedra, Universidad Libre
Profesor, Universidad Distrital Francisco José de Caldas

Bogotá agosto 2010

1
2
Contenido

PRÓLOGO .................................................................................................................................... 6
INTRODUCCIÓN........................................................................................................................... 8
1. MANEJO DE ARCHIVOS........................................................................................................ 11
1.1 Clase File ................................................................................................................... 11
1.1.1 Ejemplo clase File .................................................................................................. 12
1.2 Clases StreamWriter y StreamReader ...................................................................... 17
1.2.1 Ejemplo clases StreamWriter y StreamReader ..................................................... 17
1.3 Controles OpenFileDialog y SaveFileDialog .............................................................. 20
1.3.1 Ejemplo con los controles OpenFileDialog y SaveFileDialog ............................... 20
1.4 Archivos secuenciales ............................................................................................... 24
1.4.1 Ejemplo de archivos secuenciales ........................................................................ 24
1.5 Archivos binarios ........................................................................................................ 29
1.5.1 Ejemplo de archivos binarios ................................................................................. 29
1.6 Importar y exportar datos de una hoja de Excel ........................................................ 32
16.1 Ejemplo importar y exportar datos de Excel .......................................................... 32
1.7 Exportar datos a Word ............................................................................................... 38
1.7.1 Ejemplo de exportar datos de VB.NET a Word ..................................................... 38
1.8 Ejercicios de archivos ................................................................................................ 43
2. BASES DE DATOS ................................................................................................................. 44
2.1 Tipos de bases de datos ............................................................................................ 44
2.1.1 Relacionales .......................................................................................................... 44
2.1.2 Orientada a objetos ............................................................................................... 44
2.2 Lenguaje de Consulta Estructurado (S.Q.L.) ............................................................. 44
2.2.1 Comandos ............................................................................................................. 45
2.2.2 Cláusulas ............................................................................................................... 45
2.2.3 Operadores lógicos................................................................................................ 46
2.2.4 Operadores de Comparación ................................................................................ 46
2.2.5 Funciones de agregado ......................................................................................... 46
2.3 Sentencias Básicas SQL ........................................................................................... 47
2.3.1 CREATE DATABASE ............................................................................................ 47
2.3.2 DROP DATABASE ................................................................................................ 48
2.3.3 CREATE TABLE .................................................................................................... 48
2.3.4 DROP TABLE ........................................................................................................ 48
2.3.5 INSERT .................................................................................................................. 48
2.3.6 ALTER ................................................................................................................... 48
2.3.7 SELECT ................................................................................................................. 49
2.3.8 DELETE ................................................................................................................. 50
2.3.9 UPDATE ................................................................................................................ 50
2.3.10 INNER JOIN ...................................................................................................... 51
2.4 Conexión a bases de datos ....................................................................................... 52
2.5 Ejemplos de conexión a bases de datos ................................................................... 52
2.5.1 Conexión a una base de datos de SQL Server ..................................................... 52
2.5.2 Conexión a una base de datos de ACCESS ......................................................... 56
2.5.3 Conexión a una base de datos de ORACLE con código ...................................... 59
2.6 Conexión a una bases de datos con el Explorador de servidores ............................ 63
2.6.1 Conexión a SQL Server con el Explorador de servidores ..................................... 63
2.7 Ejercicios de conexión a bases de datos ................................................................... 71
3. DESPLAZAMIENTO POR LOS REGISTROS DE UNA TABLA ............................................. 72
3.1 Ejemplos de desplazamiento por los registros de una tabla ..................................... 72
3.1.1 Formulario con campos de texto y botones .......................................................... 72
3.1.2 Formulario con una cuadrícula y botones ............................................................. 82
3.1.2 Formulario con una cuadrícula y un control BindingNavigator .............................. 85
3.2 Ejercicios de desplazamiento por los registros de una tabla ..................................... 92

3
4. OPERACIONES CON TABLAS DE UNA BASE DE DATOS............................................. 93
4.1 Ejemplos de operaciones con tablas de una base de datos ..................................... 93
4.1.1 Insertar registros en una tabla utilizando campos de texto ................................... 93
4.1.2 Insertar registros en una tabla utilizando un DataGridView .................................. 96
4.1.3 Buscar registros por un campo específico .......................................................... 101
4.1.4 Buscar registros por cualquier campo de una tabla ............................................ 104
4.1.5 Buscar registros mientras se escribe .................................................................. 107
4.1.6 Ejecutar instrucciones SQL sobre una base de datos ........................................ 111
4.1.7 Eliminar registros de una tabla ............................................................................ 113
4.1.8 Actualizar registros de una tabla ......................................................................... 117
4.1.9 Generar un reporte de los registros de una tabla ................................................ 120
4.2 Ejercicios de operaciones con tablas de una base de datos ................................... 131
5. MANEJO DE RELACIONES ENTRE TABLAS EN UNA BASE DE DATOS ................... 132
5.1 Ejemplos de relación de tablas de una base de datos ............................................ 132
5.1.1 Visualizar registros de tablas relacionadas ......................................................... 132
5.1.2 Relación de tablas utilizando dos DataGridView ................................................. 135
5.1.3 Relación de tablas utilizando ComboBox ............................................................ 138
5.1.4 Reporte con tablas relacionadas ......................................................................... 147
5.2 Ejercicios de relación de tablas ............................................................................... 162
6. MANEJO DE ARCHIVOS CON ASP.NET ....................................................................... 163
6.1 Manejo de Archivos de texto con ASP.NET. ........................................................... 163
6.2 Ejemplos de manejo de archivos con ASP.NET. ..................................................... 164
6.2.1 Cargar archivo con el control FileUpLoad. .......................................................... 164
6.2.2 Manejo de archivos de texto con StreamWriter y StreamReader. ...................... 168
6.2.3 Guardar /Leer Archivo de texto con FileSystem .................................................. 171
6.3 Ejercicios de archivos de texto con ASP.NET ......................................................... 175
7. BASE DE DATOS CON ASP.NET ................................................................................... 176
7.1 Ejemplos de manipulación de bases de datos con ASP.NET ................................. 176
7.1.1 Pagina Web con los campos de una tabla .......................................................... 176
7.1.2 Conexión a una base de datos desde un Formulario Web ................................. 180
7.1.3 Conexión a SQL Server con el control DetailsView ............................................ 183
7.1.4 Página Web con desplazamiento de registros .................................................... 192
7.1.5 Página Web para insertar registros en una tabla ................................................ 200
7.1.6 Pagina Web para eliminar registros de una tabla ............................................... 210
7.1.7 Página Web para modificar registros .................................................................. 215
7.1.8 Página Web con un informe de los registros de una tabla .................................. 220
7.2 Ejercicios de bases de datos con ASP.NET ............................................................ 231
8. MANEJO DE TABLAS RELACIONADAS CON ASP.NET ............................................... 232
8.1 Ejemplos de relación entre tablas de una base de datos con ASP.NET ................ 232
8.1.1 Relación de dos tablas con DropDownList y GridView ....................................... 232
8.1.2 Relación de tablas utilizando GridView y FormView ........................................... 246
8.1.3 Página Web con tres tablas relacionadas ........................................................... 261
8.2 Ejercicios relación de tablas con ASP.NET ............................................................. 278
ANEXO A CREACIÓN DE APLICACIONES WINDOWS FORMS ........................................... 279
A.1 Crear un nuevo proyecto Visual Basic .NET (Windows Forms) ............................... 279
A.2 Elegir plantilla de aplicaciones ................................................................................... 280
A.3 Crear la interfaz de usuario ........................................................................................ 283
A.4 Establecer las propiedades de los controles ............................................................. 284
A.5 Escribir código ............................................................................................................ 285
A.6 Guardar la aplicación ................................................................................................. 286
A.7 Ejecutar la aplicación Windows Forms ...................................................................... 286
A.8 Cerrar y abrir un proyecto .......................................................................................... 287
ANEXO B CREACIÓN DE APLICACIONES WEB ASP.NET ................................................... 288
B.1 Crear un nuevo Sitio Web (ASP.NET) ...................................................................... 288

4
B.2 Elegir plantilla de aplicaciones ................................................................................... 289
B.3 Crear la interfaz de usuario ........................................................................................ 293
B.4 Establecer las propiedades de los controles. ............................................................ 294
B.5 Escribir código ............................................................................................................ 295
B.6 Ejecutar la aplicación Web ......................................................................................... 298
B.7 Cerrar y abrir un sitio Web ......................................................................................... 300
ANEXO C SQL SERVER .......................................................................................................... 301
C.1. Conectarse a SQL Server. ........................................................................................ 301
C.2 Crear una base de datos ........................................................................................... 302
C.3 Crear tablas en la base de datos ............................................................................... 304
C.4 Crear Diagramas de una base de datos .................................................................... 312
C.5 Crear una vista ........................................................................................................... 316
ANEXO D ORACLE DATABASE 10G EXPRESS .................................................................... 320
D.1 Instalación .................................................................................................................. 320
D.2 Creación de una tabla en la base de datos con usuario system ............................... 325
ÍNDICE ...................................................................................................................................... 332
BIBLIOGRAFÍA.......................................................................................................................... 334
INFOGRAFÍA............................................................................................................................. 334

5
PRÓLOGO

Manejo de datos con Visual Basic y ASP .NET proporciona los elementos necesarios
para el manejo de datos desde el entorno del lenguaje de Programación Visual Basic
.NET con aplicaciones Windows Forms y ASP. Este libro ha sido pensado para todos
aquellos que estén interesados en conocer cómo se puede guardar o recuperar
información desde archivos de texto plano, importar o exportar desde Visual Basic
.NET datos a otros programas como Excel, Word, etc... Además realizar la conexión a
diferentes bases de datos, desplazarse entre los registros de una tabla, realizar
operaciones entre tablas y la relación de éstas. El material didáctico del libro se basa en
el aprendizaje guiado por la conceptualización de cada tema, la realización de ejemplos
prácticos explicados y con gráficos que visualizan el objetivo de los ejercicios.

Todos los ejemplos del libro han sido compilados y ejecutados con el programa
Microsoft Visual Studio 2008 (la mayoría de los ejemplos también los puede compilar y
ejecutar con las versiones Express Edition Visual Basic 2005/2008 y Visual Web
Developer 2005/2008); cada ejemplo es explicado detalladamente, solamente se omiten
explicaciones en aquellos casos en donde se ha realizado con anterioridad.

Este libro se dirige fundamentalmente a personas que conozcan el lenguaje de


programación Visual Basic en el entorno .NET, es decir, en este libro se supone que el
lector tiene conocimiento sobre los conceptos básicos de programación de este lenguaje,
sabe crear y ejecutar proyectos de Visual Basic en el entorno .NET (Windows Forms,
ASP), aunque en los anexos A y B se explica en forma breve como trabajar con
proyectos Windows Forms y sitios Web (ASP.NET). Además, que tenga conocimientos
sobre programación orientada a objetos. También es recomendable tener nociones
concernientes al lenguaje estructurado de consulta SQL y HTML. Por otro lado, es
indispensable que tenga la conceptualización teórica y ojalá práctica de bases de datos.

Capítulos del libro

Manejo de datos con Visual Basic y ASP .NET contiene 8 capítulos y 4 anexos
distribuidos de la siguiente forma:

 Capítulo 1, Manejo de Archivos: Se conceptualiza sobre las clases File,


StreamWriter, StreamReader, los controles OpenFileDialog y
SaveFileDialog, como también los conceptos de archivos secuenciales y
binarios. Además, cómo importar y exportar datos. Todo esto apoyado con
ejemplos explicados sobre cada tema.
 Capítulo 2, Bases de datos: Se trabajan los conceptos básicos de bases de
datos, así como también se realiza una descripción del lenguaje estructurado
de consulta SQL. Además se realizan ejemplos de sentencias básicas de
SQL. Por otro lado, se desarrollan ejemplos para obtener la conexión a las
bases de datos SQL Server, Access y Oracle.
 Capítulo 3, Desplazamiento por los registros de una tabla: Básicamente
lo que se realiza en este capítulo son diversos ejemplos que permiten el
desplazamiento entre los registros de una tabla perteneciente a una base de
datos.

6
 Capítulo 4, Operaciones con tablas de una base de datos: Se manejan
ejemplos de las distintas operaciones que se pueden realizar con los registros
de una tabla como son: insertar, consultar, buscar, eliminar, actualizar y
generar reportes. Cada operación es ilustrada con ejemplos debidamente
explicados.
 Capítulo 5, Manejo de las relaciones de tablas en una base de datos:
Aquí se conceptualiza y se crean ejemplos sobre la relación de tablas de una
base de datos utilizando diferentes controles que ofrece Visual Basic .NET,
así como la creación de reportes con tablas relacionadas.
 Capítulo 6, Manejo de Archivos con ASP.NET: Se conceptualiza sobre
ASP. NET, como también se crean diversos ejemplos de escritura y lectura
de archivos de texto plano en una aplicación Web.
 Capítulo 7, Bases de datos con ASP.NET: Se diseñan ejemplos
ilustrativos sobre la operación y manipulación de los registros de una tabla
utilizando una aplicación Web. Con los ejemplos se puede verificar la
estructura de una tabla, la conexión a una base de datos con distintos
controles, el desplazamiento de registros y las operaciones de inserción,
eliminación, modificación de registros, como también la creación de
reportes.
 Capítulo 8, Manejo de tablas relacionadas con ASP.NET: En este
capítulo se diseñaron ejemplos que permiten obtener la relación entre tablas
en aplicaciones Web utilizando diferentes controles de Visual Basic. NET.
 Anexo A: Se explica en forma breve cómo se crean proyectos Windows
Forms, el diseño de la interfaz de usuario, la modificación de los controles
del proyecto, la escritura de código, así como guardar y ejecutar un proyecto
Windows Forms. Además, cómo cerrar y/o abrir un proyecto Windows
Forms.
 Anexo B: Se explica cómo se crean nuevos sitios Web, el diseño de la
interfaz de usuario, la modificación de los controles del sitio Web, la
escritura de código y la ejecución de un sitio Web. Además, cómo cerrar y/o
abrir un sitio Web.
 Anexo C: Se explica cómo se realiza la conexión a 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.
 Anexo D: En este anexo se explica cómo se realiza la instalación de la base
de datos Oracle Database 10g Express Edition; también, cómo se crea e
insertan datos en una tabla de dicha base de datos.

Como apoyo complementario a esta publicación se ha incluido un CD que


contiene cada uno de los capítulos del libro, los anexos explicativos del software que se
utilizó, el código fuente de todos los ejemplos mostrados en el libro por capítulo, así
como el software utilizado y otros aspectos de interés. Además se incluye el documento
en pdf.

Si al insertar el CD no se ejecuta automáticamente, el usuario deberá abrir el


archivo inicio.html que se encuentra en el directorio raíz del CD. Una vez abierto, se
podrá ver la página de inicio; pulse la imagen “Manejo de datos con Visual Basic y
ASP.NET”, se visualizará la página principal donde encontrará los vínculos para cada
capítulo, los anexos, el software, los archivos con el código fuente y el documento del
libro.

7
INTRODUCCIÓN

Visual Basic .NET (VB.NET) es una versión de Visual Basic enfocada al desarrollo de
aplicaciones .NET, e implementada sobre el Framework.NET (más adelante se explica
este tema). Dicho lenguaje de programación es orientado a objetos, donde es posible la
creación de clases que pueden derivarse de otras mediante herencia, la sobrecarga de
métodos, el control estructurado de excepciones o la creación de aplicaciones con
múltiples hilos de ejecución, además de contar con la extensa librería de .NET, con la
que permite desarrollar tanto aplicaciones Windows Forms y formularios Web, como el
manejo de diversos proveedores de bases de datos, el envío de datos mediante
documentos XML1 y la generación de informes a partir de archivos de texto, bases de
datos, etc.

Para programar con Visual Basic .NET generalmente se utiliza el entorno de


desarrollo integrado Microsoft Visual Studio (2003, 2005, 2008), aunque también es
posible trabajar con el software libre SharpDevelop. Todos los programas basados en
Visual Basic. NET requieren un Framework .NET para ejecutarse.

Microsoft .NET.

Microsoft .NET es un entorno integrado de ejecución, compilación, depuración y


desarrollo de aplicaciones. Los diferentes lenguajes de programación de la plataforma
comparten el mismo entorno, normas, reglas y librerías de Microsoft .NET Framework.
La plataforma .NET proporciona software que permite conectar sistemas, información,
dispositivos y usuarios distintos de un modo más unificado y personalizado. Incorpora
servicios Web XML como medio para permitir la interoperabilidad entre tecnologías
diferentes. También proporciona a los desarrolladores de software las herramientas y la
tecnología para crear rápida y eficazmente soluciones de negocio que abarcan múltiples
aplicaciones y múltiples dispositivos cliente entre diversas organizaciones, además
permite a los usuarios controlar qué información, cómo y cuándo se les entrega. Sus
componentes de trabajo son:

 El conjunto de lenguajes de programación: además del Visual Basic, la


plataforma .NET puede trabajar los lenguajes de programación C++, C#, J#
entre otros.
 La biblioteca de clases base o BCL: maneja las operaciones básicas involucradas
en el desarrollo de aplicaciones, algunas operaciones son: interacción con
dispositivos periféricos, manejo de datos, administración de memoria,
administración de componentes Web, herramientas graficas, operaciones
matemáticas, generación de código, etc. La BCL se clasifica en: .NET, Windows
Forms, ASP.NET, ADO.NET.
 El entorno común para ejecución de lenguajes o CLR (Common Language
Runtime) es el entorno de ejecución en donde se cargan las aplicaciones
desarrolladas en los diferentes lenguajes. Esta herramienta compila el código
fuente de los lenguajes soportados por .NET en un código intermedio (Microsoft
Intermediate Language MSIL o CIL2). Para generarlo, el compilador se basa en
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.
2
Lenguaje ensamblador orientado a objetos y está basado en pilas.

8
la específicación CLS (Common Language Specification) que determina las
reglas necesarias para crear el código MSIL compatible con el CLR. Además,
para ejecutarse necesita un compilador JIT3 (Just-In-Time) el cual genera el
código máquina4 real que se ejecuta en la plataforma del cliente. De esta forma
se consigue con .NET independencia de la plataforma de hardware.

.NET Framework

El .NET Framework es un conjunto de servicios de programación diseñados para


simplificar el desarrollo de aplicaciones sobre el entorno distribuido de Internet. El
diseño de .NET Framework está enfocado a cumplir los objetivos siguientes:

 Proporcionar un entorno coherente de programación orientada a objetos, en el


que el código de los objetos se pueda almacenar y ejecutar en forma local pero
distribuida en Internet o ejecutar en forma remota.
 Proporcionar un entorno de ejecución de código que reduzca lo máximo posible
la implementación de software y los conflictos de versiones.
 Ofrecer un entorno de ejecución de código que fomente la ejecución segura del
mismo, incluso del creado por terceras personas desconocidas o que no son de
plena confianza.
 Proporcionar un entorno de ejecución de código que elimine los problemas de
rendimiento de los entornos en los que se utilizan secuencias de comandos o
intérpretes de comandos.
 Ofrecer al programador una experiencia coherente entre tipos de aplicaciones
muy diferentes, como las basadas en Windows o en el Web.

.NET Framework contiene dos componentes principales: Common Language


Runtime y la biblioteca de clases de .NET Framework. Common Language Runtime es
el fundamento de .NET Framework. El motor en tiempo de ejecución se puede
considerar como un agente que administra el código en tiempo de ejecución y
proporciona servicios centrales, como la administración de memoria, la administración
de subprocesos y la interacción remota, al tiempo que aplica una seguridad estricta a los
tipos y otras formas de específicación del código que fomentan su seguridad y solidez.
De hecho, el concepto de administración de código es un principio básico del motor en
tiempo de ejecución. El código destinado al motor en tiempo de ejecución se denomina
código administrado, a diferencia del resto de código, que se conoce como código no
administrado. La biblioteca de clases, el otro componente principal de .NET
Framework, es una completa colección orientada a objetos de tipos reutilizables que se
pueden emplear para desarrollar aplicaciones que abarcan desde las tradicionales
herramientas de interfaz gráfica de usuario (GUI) o de línea de comandos hasta las

3
Técnica para mejorar el rendimiento de sistemas de programación que compilan a bytecode, consistente
en traducir el bytecode a código máquina nativo en tiempo de ejecución.
4
Sistema de códigos directamente interpretable por un circuito microprogramable, como el
microprocesador de un computador o el microcontrolador de un autómata (un PLC). Este lenguaje está
compuesto por un conjunto de instrucciones que determinan acciones a ser tomadas por la máquina.

9
aplicaciones basadas en las innovacíones más recientes proporcionadas por ASP.NET,
como los formularios Web Forms y los servicios Web XML.

En la ilustración siguiente se muestra la relación de Common Language Runtime y


la biblioteca de clases con las aplicaciones y el sistema en su conjunto.

.NET Framework en contexto.

10
1. MANEJO DE ARCHIVOS

Muchos de los programas que se crean con Visual Basic .NET necesitan interactuar con
datos del exterior, procesarlos para luego mostrarlos en un formulario, guardarlos en
archivos de texto, en una hoja de Excel, en un archivo de Word, enviarlos a la red o
simplemente imprimirlos en papel, etc. Se usan archivos para conservar a largo plazo
grandes cantidades de datos. Los datos guardados en archivos se conocen como datos
persistentes. Los computadores guardan los archivos en dispositivos de almacenamiento
secundario como discos magnéticos, ópticos y cintas magnéticas.

Para procesar archivos en Visual Basic .NET se debe hacer uso del espacio de
nombres5 System.IO. El espacio de nombres System.IO contiene enumeraciones para
la apertura de archivos, el acceso a los archivos, el uso compartido de archivos,
además, de clases para las operaciones de rutas de acceso y la manipulación de flujos de
datos.

1.1 Clase File

Se puede utilizar la clase File para operaciones como copiar, mover, cambiar el nombre,
crear, abrir, eliminar y anexar texto a archivos de texto plano. También con la clase File
se puede obtener y definir atributos del archivo o información relacionada con la hora y
fecha de creación, el acceso y la escritura en un archivo.

Stream es la clase base de todas las secuencias de flujos de datos. Una secuencia
es una abstracción de una secuencia de bytes, como un archivo, un dispositivo de
entrada/salida, un canal de comunicación interprocesos o un socket TCP/IP. La clase
Stream y sus clases derivadas proporcionan una visión genérica de diferentes tipos de
entrada y salida, aislando al programador de los detalles específicos del sistema
operativo y sus dispositivos subyacentes.

Algunos métodos de la clase File son:

Tabla 1.1 Métodos de la clase File.

Método Proceso
CreateText(ruta) Crea o abre un archivo para escribir texto.
Create(ruta) Crea un archivo en la ruta específicada
AppendText Anexa texto a un archivo de texto
existente.
Delete Elimina un archivo existente.
Copy Copia un archivo
Exists Determina si existe un archivo específico.
Open Abre un archivo de texto existente
Move Mueve un archivo a un sitio específico.
GetCreateTime Devuelve la hora y la fecha de la creación
de un archivo.
Replace Reemplaza el contenido de un archivo en
otro.

5
Se usan para agrupar clases y otros tipos de datos que estén relacionados entre sí.

11
1.1.1 Ejemplo clase File

Hacer un nuevo proyecto llamado GuardarábrirConFile y realizar un programa que


permita a un usuario guardar información en un archivo de texto plano, recuperar la
información de éste, así como adicionarle información utilizando la clase File.

NOTA: Si lo considera necesario puede revisar el Anexo A, donde se explica


brevemente la creación, la interfaz de usuario, el establecimiento de propiedades a los
controles, la escritura de código, la ejecución de un nuevo proyecto Windows Forms.

 Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control específico y ubique los


siguientes controles en el formulario en la posición deseada: 2 Label, 2 TextBox, 3
Button.

Figura 1.1 Interfaz de usuario (GuardarábrirConFile).

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


Establezca las siguientes modificaciones a las propiedades en los controles:

Tabla 1.2 Propiedades de los controles del proyecto GuardarábrirConFile.

Control Propiedad Valor


Label1 Name etiquetaver
Text Texto del archivo de
escritura/lectura.
Label2 Name etiquetaadicion
Text Texto para adicionar
TextBox1 Name texto
Text En blanco
Multiline true
TextBox2 Name textoadicional
Text En blanco
Multiline true
Button1 Name botonguardar

12
Text Guardar en archivo
Button2 Name botonabrir
Text Abrir archivo
Button3 Name botonadicionar
Text Adicionar texto
Form1 Name formulario
Text Guardar, leer y adicionar datos
en archivo de texto.

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

Figura 1.2 Interfaz de usuario, propiedades modificadas (GuardarábrirConFile).

 Escribir código

a) Antes de la apertura de la clase se debe importar el espacio de nombres


System.IO. Dé doble clic sobre el formulario y busque Public class formulario
y antes de este código escriba imports System.IO. El código queda de la
siguiente manera:

imports System.IO
Public Class formulario
……
End Class

Se importa el espacio de nombres System.IO para poder manipular los métodos


de la clase File.

b) En modo diseño del formulario, seleccione el objeto botonguardar, dé doble


clic para abrir el editor de código botonguardar_Click y escriba el siguiente
código:
Try
Dim escribir As StreamWriter
escribir = File.CreateText("c:\datosentexto.txt")
escribir.Write(texto.Text)
escribir.Close()
texto.Text = ""

13
MsgBox("Texto Guardado", MsgBoxStyle.Information)
Catch ex As Exception
MsgBox("Error al guardar el archivo", MsgBoxStyle.Critical)
End Try

Se define un bloque Try-Catch para atrapar errores y las acciones a


seguir. Aunque no es necesario, es una buena práctica cuando se están
realizando operaciones de entrada/salida para evitar salidas anormales del
sistema. En el bloque Try se establece el código que realiza una tarea específica
y que en un caso dado puede generar un error; en el bloque Catch irá el código
que realizará las acciones a seguir en caso de error.
Dentro del bloque Try se crea un objeto llamado escribir de tipo
StreamWriter (flujo de escritura). A dicho objeto se le asigna la creación del
archivo de texto “c:\datosentexto.txt” por medio del método createText de la
clase File. Utilizando el método write y enviándole como parámetro el
contenido del control llamado texto, se guarda la información en el archivo
específicado. Por otro lado, se cierra el archivo utilizando el método close() y se
limpia el objeto texto. Por último se muestra una caja de mensajes con el
mensaje “Texto Guardado”. En el bloque Catch se captura en el objeto ex de
tipo Exception el error que se pueda generar y se mostrará el mensaje “Error al
guardar el archivo”.

c) Seleccione el objeto botonabrir, dé doble clic para abrir el editor de código


botonabrir_Click y escriba el siguiente código:
Try
Dim leer As StreamReader
leer = File.OpenText("c:\datosentexto.txt")
texto.Text = leer.ReadToEnd
leer.Close()
Catch ex As Exception
MsgBox("Error al leer el archivo", MsgBoxStyle.Critical)
End Try

Dentro del bloque Try se crea un objeto llamado leer de tipo


StreamReader (flujo de lectura). A dicho objeto se le establece la apertura del
archivo de texto “c:\datosentexto.txt” por medio del método openText de la
clase File. Utilizando el método readToEnd se lee el archivo de texto desde el
inicio hasta el final y se le asigna su contenido al objeto texto. Por otro lado, se
cierra el archivo utilizando el método close (). En el bloque Catch si se genera
algún error se mostrará el mensaje “Error al leer el archivo”.

d) Seleccione el objeto botonadicionar, dé doble clic para abrir el editor de código


botonadicionar_Click y escriba el siguiente código:
Try
texto.Text = " "
Dim adicionartexto As StreamWriter
adicionartexto = File.AppendText("C:\datosentexto.txt")
adicionartexto.WriteLine(textoadicional.Text)
adicionartexto.Close()
textoadicional.Text = ""
Catch ex As Exception
MsgBox("Error al adicionar inf. al archivo", MsgBoxStyle.Critical)
End Try

14
Dentro del bloque Try primero se coloca el objeto texto en blanco y
luego se crea un objeto llamado adicionartexto de tipo StreamWriter (flujo de
escritura). A dicho objeto se le asigna la propiedad de adición del texto al
archivo “c:\datosentexto.txt” por medio del método AppendText de la clase
File. Utilizando el método WriteLine y enviándole como parámetro el
contenido del control llamado textoadicional, se adiciona la información al final
del archivo específicado. Por otro lado se cierra el archivo utilizando el método
close () y se limpia el objeto textoadicional. En el bloque Catch si se genera
algún error, se mostrará el mensaje “Error al adicionar inf. al archivo”.

 Ejecutar el proyecto

Para ejecutar el proyecto pulse la tecla F5 o el icono , se visualizará la figura 1.2. Al


escribir “creando un nuevo archivo para guardarlo con el botón Guardar en archivo”
en el objeto texto, dicha figura quedaría así:

Figura 1.3 Ejecución aplicación AbrirGuardarConFile.

Al pulsar el botón Guardar en Archivo, se creará en C:\ el archivo


datosentexto.txt y el objeto texto se limpiará. Mostrándose la siguiente caja de texto:

Figura 1.4 Mensaje de texto guardado en el archivo datosentexto.txt.

15
Pulse el botón Aceptar para cerrar dicha caja. Al pulsar el botón Leer Archivo,
se visualizará nuevamente la figura 1.3. Si se adiciona el texto “adicionando texto al
archivo que previamente había guardado” en el objeto textoadicional. El formulario
deberá ser semejante a la siguiente figura:

Figura 1.5 Formulario con el texto original y el texto adicional.

Ahora pulse el botón Adicionar Texto, y nuevamente pulse el botón Leer


Archivo para visualizar la siguiente figura:

Figura 1.6 Lectura del archivo con el texto adicional.

16
1.2 Clases StreamWriter y StreamReader

Las clases StreamWriter y StreamReader permiten las operaciones con archivos de


texto plano. Para hacer uso de estas clases es necesario incluir el espacio de nombres
System.IO. La Clase StreamReader (flujo de lectura) es una opción más para la
manipulación de archivos de texto plano. Esta clase, entre otros, contiene el método
ReadToEnd cuyo objetivo es leer un archivo desde una posición inicial hasta el final.

La Clase StreamWriter (flujo de escritura) está diseñada para la salida de


caracteres. Esta clase contiene entre otros el método Write para escribir información en
el archivo.

1.2.1 Ejemplo clases StreamWriter y StreamReader

Crear un proyecto llamado GuardarábrirArchivoTexto y hacer un programa que


permita a un usuario guardar información en un archivo de texto plano, así como poder
abrirlo y visualizar el contenido de este, utilizando las clases StreamWriter y
StreamReader.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario en la posición deseada: 1 Label, 1 TextBox, 2
Button.

Figura 1.7 Interfaz de usuario (GuardarábrirArchivoTexto).

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


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

17
Tabla 1.3 Propiedades de los controles del proyecto GuardarábrirArchivoTexto.

Control Propiedad Valor


Label1 Name titulo
Text Guardar y abrir un archivo de
texto.
Font – Bold true
TextBox1 Name texto
Text En blanco
Multiline true
Button1 Name botonguardar
Text Guardar archivo de texto
Button2 Name botonabrir
Text Abrir archivo de texto
Form1 Name formulario
Text Guardar y abrir archivos de
texto.

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

Figura 1.8 Interfaz de usuario modificada (GuardarábrirArchivoTexto).

 Escribir código
a) Seleccione el objeto botonguardar, dé doble clic para abrir el editor de código y
escriba el siguiente código:
Try
Dim archivo As New System.IO.StreamWriter("./archivotexto.txt")
archivo.Write(texto.Text)
archivo.Close()
texto.Text = ""
Catch ex As Exception
MsgBox("No se pudo guardar la informacion", MsgBoxStyle.Critical)
End Try

Se define la variable archivo asignándosele un espacio de memoria de


tipo System.IO.StreamWriter (), al cual se le envía como parámetro el nombre
del archivo (archivotexto.txt). Dicho archivo estará ubicado en la carpeta
18
\bin\debug del proyecto. Utilizando el método Write se escribe el contenido del
objeto texto en el archivo. Por otro lado se cierra el archivo utilizando el método
close () y se limpia el objeto texto.

b) Seleccione el objeto botonabrir, dé doble clic para abrir el editor de código y


escriba el siguiente código:
Try
Dim miruta As String = ("./archivotexto.txt")
Dim archivo As New System.IO.StreamReader(miruta)
texto.Text = archivo.ReadToEnd
archivo.Close()
Catch ex As Exception
MsgBox("No se pudo guardar la informacion", MsgBoxStyle.Critical)
End Try

Se definen las variables miruta de tipo String, la cual se inicializa con la


ruta y el nombre del archivo “archivotexto.txt” y la variable archivo
asignándosele un espacio de memoria de tipo System.IO.StreamWriter ().
Utilizando el método ReadToEnd se lee el contenido del archivo y se le asigna
al objeto texto. Por último se cierra el archivo.

 Ejecutar el proyecto
Al ejecutarse el proyecto en el entorno de desarrollo de Visual Basic.NET/2008, se
visualizará la figura 1.8. Al adicionársele el texto “El amor es el principio de todo, la
razón de todo, el fin de todo” en el objeto llamado texto, el formulario presentaría el
siguiente aspecto:

Figura 1.9 Ejecución aplicación GuardarábrirArchivoTexto.

Al pulsar el botón con la etiqueta “Guardar Archivo de texto”, se creará un


archivo de texto llamado archivotexto.txt y el objeto texto quedara en blanco. Al
pulsar el botón Abrir Archivo de texto, se cargará en el objeto texto el contenido del
archivo de texto.

19
1.3 Controles OpenFileDialog y SaveFileDialog

Los controles OpenFileDialog y SaveFileDialog del cuadro de herramientas de Visual


Basic .NET /2008, son cuadros de diálogo que permiten abrir y guardar archivos,
respectivamente. El control OpenFileDialog representa un cuadro de diálogo para
seleccionar un archivo que será abierto. El control SaveFileDialog representa un cuadro
de diálogo para guardar un archivo nuevo o sobrescribir en un archivo existente. Estos
controles obtienen su funcionamiento de la clase abstracta FileDialog. La clase
FileDialog es un cuadro de diálogo modal; por tanto, al mostrarse, bloquea el resto de la
aplicación hasta que el usuario haya elegido un archivo o cancelado la operación.

1.3.1 Ejemplo con los controles OpenFileDialog y SaveFileDialog

Realizar un proyecto llamado GuardarábrirConControles y diseñar un programa que


permita a un usuario guardar información en un archivo de texto plano, así como poder
abrirlo y visualizar el contenido de éste, utilizando los controles OpenFileDialog y
SaveFileDialog.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario en la posición deseada: 2 Label, 1 TextBox, 2
Button, 1 OpenFileDialog y 1 SaveFileDialog.

Figura 1.10 Interfaz de usuario (GuardarábrirArchivoConControles)

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


Establezca las siguientes modificaciones a los controles:

20
Tabla 1.4 Propiedades de controles proyecto GuardarábrirArchivoConControles.

Control Propiedad Valor


Label1 Name titulo1
Text Guardar y abrir archivo de texto
con los controles.
Font – Bold true
Label2 Name titulo2
Text SaveFileDialog y
OpenFileDialog.
Font – Bold true
TextBox1 Name texto
Text En blanco
Multiline true
SavefileDialog1 Name guardarárchivo
OpenFileDialog1 Name abrirárchivo
Button1 Name botonguardar
Text Guardar archivo de texto
Button2 Name botonabrir
Text Abrir archivo de texto
Form1 Name formulario
Text Controles SaveFileDialog y
OpenFileDialog.

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

Figura 1.11 Interfaz de usuario modificada (GuardarábrirArchivoconControles).

 Escribir código

a) Seleccione el objeto botonguardar, dé doble clic para abrir el editor de código y


escriba el siguiente código:
21
guardarárchivo.Filter = "Archivos de texto (*.txt)| *.txt"
guardarárchivo.ShowDialog()
If guardarárchivo.FileName <> "" Then
Try
Dim guardar As IO.StreamWriter
guardar = New IO.StreamWriter(guardarárchivo.FileName)
guardar.Write(texto.Text)
guardar.Close()
texto.Text = ""
Catch ex As Exception
MsgBox("No se pudo guardar el archivo")
End Try
Else
MsgBox("Archivo no contiene información")
End If

En el anterior código se utiliza la propiedad Filter del control


guardarárchivo para que cuando se abra el cuadro de diálogo solamente se
visualicen los archivos con extensión .txt. El método ShowDialog permite abrir
el cuadro de diálogo. Utilizando la estructura if se pregunta si el nombre de
archivo es diferente de vacío utilizando la propiedad FileName. Si se cumple la
condición se crea un objeto llamado guardar de tipo IO.StreamWriter al cual
se le asigna espacio de memoria enviándole como parámetro el nombre del
archivo por intermedio de la propiedad FileName del control guardarárchivo.
Por otro lado, se utiliza el método Write para guardar el contenido del objeto
texto; luego se cierra el objeto con el método close () y por último se limpia el
objeto texto. Si el nombre del archivo esté en blanco se mostrará un mensaje
informando que el archivo esta vacío o no contiene información.

b) Seleccione el objeto botonabrir, dé doble clic para abrir el editor de código y


escriba el siguiente código:

abrirárchivo.Filter = "Archivos de texto (*.txt)| *.txt"


abrirárchivo.ShowDialog()
If abrirárchivo.FileName <> "" Then
Try
Dim verarchivo As New IO.StreamReader(abrirárchivo.FileName)
texto.Text = verarchivo.ReadToEnd
verarchivo.Close()
Catch ex As Exception
MsgBox("No se pudo abrir el archivo")
End Try
Else
MsgBox("Archivo no contiene información")
End If

Utilizando la estructura if se pregunta si el nombre de archivo es


diferente de vacío. Si se cumple la condición se crea un objeto llamado
verarchivo de tipo IO.StreamReader al cual se le asigna espacio de memoria
enviándole como parámetro el nombre del archivo por intermedio de la
propiedad FileName del control abrirárchivo. Por otro lado, se utiliza el
método ReadToEnd para leer el archivo y asignarle el contenido al objeto texto,
luego se cierra el objeto con el método close (). Si, por el contrario, no contiene
información, se mostrará un mensaje informando que el archivo esta vació.

22
 Ejecutar el proyecto
Al ejecutarse el proyecto en el entorno de desarrollo de Visual Basic.NET se visualizará
la figura 1.11. Al pulsar el botón Abrir Archivo de Texto se visualizará el cuadro de
diálogo de Abrir. Se debe seleccionar un archivo de texto y pulsar el botón del cuadro
de diálogo Abrir.

Figura 1.12 Cuadro de Diálogo control abrirárchivo.

El formulario presentaría un aspecto similar:

Figura 1.13 Formulario con archivo de texto abierto.

Al pulsar el botón Guardar Archivo de Texto se visualizará el cuadro de


diálogo de Guardar como, donde se deberá digitar el nombre del archivo a guardar y
pulsar el botón del cuadro de diálogo “Guardar”. Si el archivo ya existe, preguntará si
desea sobrescribirlo.

23
Figura 1.14 Cuadro de diálogo control guardar archivo.

1.4 Archivos secuenciales

Otra forma de guardar o leer información de un archivo de texto plano es utilizar


archivos secuenciales. Los archivos secuenciales se denominan de esta manera porque
para guardar y leer la información se realiza desde el principio hasta el final del archivo,
es decir, para acceder a un dato que se encuentra en la mitad del archivo es necesario
empezar a recorrerlo desde el principio hasta encontrar el dato, o sea en forma
secuencial. El acceso secuencial funciona mejor cuando se desea procesar archivos
únicamente de texto y no archivos en los que los datos se dividen en una serie de
registros.

Cuando se abre un archivo para acceso secuencial, se debe específicar si se va a


escribir en el archivo (Input), si se va a leer el archivo (Output) o si se va a adicionar
información al archivo (Append). Para accesar a un archivo secuencial se utiliza la
función FileOpen. Cuando se abre un archivo secuencial para Input, el archivo ya debe
existir; de lo contrario, se producirá un error. No obstante, cuando se intenta abrir un
archivo que no existe para Output o Append, la instrucción FileOpen primero crea el
archivo y a continuación lo abre. Una vez que se abre un archivo para una operación
Input, Output o Append, debe cerrarse con la instrucción FileClose antes de volver a
abrirlo para realizar otro tipo de operación.

1.4.1 Ejemplo de archivos secuenciales

Crear un proyecto llamado ArchivosSecuenciales y realizar un programa que permita a


un usuario guardar información en un archivo de texto plano, leer la información de
éste, así como adicionarle más información a dicho archivo utilizando archivos
secuenciales.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario en la posición deseada: 4 Label, 3 TextBox, 3
Button.

24
Figura 1.15 Interfaz de usuario (ArchivosSecuenciales).

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


Establezca las siguientes modificaciones a los controles:

Tabla 1.5 Propiedades de controles proyecto ArchivosSecuenciales.

Control Propiedad Valor


Label1 Name titulo
Text Guardar/adicionar inf. archivo
secuencial.
Label2 Name etiquetanombre
Text Digite nombres:
Label3 Name etiquetaapellido
Text Digite apellidos:
Label4 Name mostrar
Text Lectura del archivo:
TextBox1 Name textonombre
Text En blanco
TextBox2 Name textoapellido
Text En blanco
TextBox3 Name textolectura
Text En blanco
Multiline true
Button1 Name botonguardar
Text Guardar archivo
Button2 Name botonadicionar
Text Adicionar texto
Button3 Name botonabrir
Text Leer archivo
Form1 Name formulario
Text Guardar, adicionar y leer
archivo secuencial.

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

Figura 1.16 Interfaz de usuario modificada (ArchivosSecuenciales).

 Escribir código
a) Seleccione el objeto botonguardar, dé doble clic para abrir el editor de código y
escriba el siguiente código:
Try
FileOpen(1, "c:\datossecuenciales.txt", OpenMode.Output)
PrintLine(1, textonombre.Text, textoapellido.Text)
textonombre.Text = ""
textoapellido.Text = ""
FileClose(1)
Catch ex As Exception
MsgBox("No se pudo guardar el archivo")
End Try

En el anterior código se utiliza la función FileOpen con los parámetros:


1, un número de archivo libre, “c:\datossecuenciales.txt”, nombre del archivo,
OpenMode.OutPut, modo de apertura del archivo (salida). Con el método
PrintLine se imprime en una línea del archivo el contenido de los objetos
textonombre y textoapellido, luego se limpian dichos objetos y por último se
cierra el archivo.

b) Seleccione el objeto botonadicionar, dé doble clic para abrir el editor de código


y escriba el siguiente código:
Try
FileOpen(1, "c:\datossecuenciales.txt", OpenMode.Append)
PrintLine(1, textonombre.Text, textoapellido.Text)
textonombre.Text = ""
textoapellido.Text = ""
FileClose(1)
Catch ex As Exception
MsgBox("No se pudo adicionar el archivo")
End Try

26
Lo único que cambia con respecto a la opción de Guardar archivo es el
modo de apertura del archivo (OpenMode.Append), se cambia OutPut por
Append (adicionar). Este modo de apertura permite guardar más información al
final del archivo específicado.

c) Seleccione el objeto botonabrir, de doble clic para abrir el editor de código y


escriba el siguiente código:

Try
FileOpen(1, "c:\datossecuenciales.txt", OpenMode.Input)
Dim linea As String
Do Until EOF(1)
linea = LineInput(1)
textolectura.Text = textolectura.Text & linea & vbCrLf
Loop
FileClose(1)
Catch ex As Exception
MsgBox("No se pudo abrir el archivo")
End Try

Se utiliza la función FileOpen con los parámetros: 1, un número de


archivo libre, “c:\datossecuenciales.txt”, nombre del archivo, OpenMode.Input
modo de apertura del archivo (entrada). Se define una variable llamada linea de
tipo String, la cual servirá para guardar cada línea del archivo. Por otro lado se
crea un ciclo (Do Until – Loop) que recorrerá el archivo hasta el final (EOF)
línea por línea y utilizando el método LineInput () se le asignará la información
leida al objeto textolectura, por último se cierra el archivo.

 Ejecutar el proyecto
Al ejecutarse el proyecto se visualizará la figura 1.16. Al escribir un nombre y un
apellido en las respectivas cajas de texto y pulsar el botón Guardar archivo, se
guardará dicha información en el archivo “c:\datossecuenciales.txt”. El formulario con
la información quedaría de la siguiente forma:

Figura 1.17 Formulario con información de nombre y apellido.

27
Si se desea adicionar más información al archivo de texto, escriba nuevamente
los nombres y apellidos correspondientes y pulse el botón Adicionar texto, se podría
obtener la siguiente pantalla:

Figura 1.18 Formulario con información para adicionar.

Al pulsar el botón Leer Archivo se leerá el contenido del archivo de texto, como
se muestra en la siguiente figura.

Figura 1.19 Formulario con la información del archivo.

28
1.5 Archivos binarios

También es posible guardar o leer información desde un archivo con acceso binario.
Con los archivos de acceso binario se puede almacenar información ya sea numérica, de
cadena o de ambas. Este tipo de archivo no requiere campos de longitud fija. No
obstante, es necesario conocer cómo se escribieron exactamente los datos en el archivo
para poder recuperarlos correctamente. Por ejemplo, si almacena una serie de productos
y unas cantidades, debe tener en cuenta que el primer campo (producto) es texto y el
segundo (cantidades) es numérico.

Para abrir un archivo para acceso binario, se recurre a OpenMode.Binary con la


instrucción FileOpen. Una vez abierto, para escribir en el archivo se utiliza las
funciones FilePut y FilePutObject. Para leer un archivo se manejan las funciones
FileGet y FileGetObject.

1.5.1 Ejemplo de archivos binarios

Realizar un proyecto llamado ArchivosBinarios y hacer un programa que permita a un


usuario guardar información en un archivo de texto plano, leer la información de este,
utilizando archivos binarios.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario en la posición deseada: 3 Label, 3 TextBox, 2
Button.

Figura 1.20 Interfaz de usuario (ArchivosBinarios).

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


Establezca las siguientes modificaciones a los controles:

29
Tabla 1.6 Propiedades de controles proyecto ArchivosBinarios.

Control Propiedad Valor


Label1 Name titulo
Text Guardar/adicionar inf. archivo
binario.
Label2 Name etiquetaproducto
Text Digite producto:
Label3 Name etiquetacantidad
Text Digite cantidad:
TextBox1 Name textoproducto
Text En blanco
TextBox2 Name textocantidad
Text En blanco
TextBox3 Name textolectura
Text En blanco
Multiline true
Button1 Name botonguardar
Text Guardar archivo
Button2 Name botonabrir
Text Leer archivo
Form1 Name formulario
Text Guardar/leer archivo binario.

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

Figura 1.21 Interfaz de usuario modificada (ArchivosBinarios).

 Escribir código

a) Definir una estructura llamada Articulo después de Public class formulario:

Structure Articulo
<VBFixedString(30)> Dim producto As String
<VBFixedString(10)> Dim cantidad As String
End Structure

30
Se define una estructura (Structure) llamada Articulo que contendrá dos
tipos de datos String producto y cantidad. Se utiliza el atributo
VBFixedString () para definir la longitud máxima de los datos.

b) Seleccione el objeto botonguardar, dé doble clic para abrir el editor de código y


escriba el siguiente código:
Dim nombrearchivo As String
Dim numeroarchivo As Short
Dim inventario As Articulo
inventario.producto = textoproducto.Text
inventario.cantidad = textocantidad.Text
numeroarchivo = FreeFile()
nombrearchivo = "c:\datosaleatorios.txt"
FileOpen(numeroarchivo, nombrearchivo, OpenMode.Binary)
FilePut(numeroarchivo, inventario)
FileClose(numeroarchivo)

Se crean las variables nombrearchivo de tipo String, numeroarchivo


de tipo Short e inventario de tipo Articulo. Se le asigna la información
capturada en los objetos textoproducto y textocantidad a los datos de la
estructura Articulo utilizando la instancia inventario. La variable
numeroarchivo es inicializada con un número de archivo libre utilizando la
función FreeFile (), como también se le asigna a la variable nombrearchivo la
ruta y el nombre del archivo donde se guardará la información. Se abre el
archivo en modo binario utilizando la función FileOpen que recibe como
parámetros: un número de archivo libre (numeroarchivo), el nombre del
archivo (nombrearchivo), la apertura del archivo binario (OpenMode.Binary).
Con FilePut se escriben los valores que contiene la estructura inventario en el
archivo binario y por último se cierra el archivo.

c) Seleccione el objeto botonabrir, dé doble clic para abrir el editor de código y


escriba el siguiente código:

Dim nombrearchivo As String


Dim numeroarchivo As Short
numeroarchivo = FreeFile()
nombrearchivo = "c:\datosaleatorios.txt"
FileOpen(numeroarchivo, nombrearchivo, OpenMode.Binary)
textolectura.Text = New String(" "c, 50)
FileGet(numeroarchivo, textolectura.Text)
FileClose(numeroarchivo)

Como se puede apreciar, las primeras cinco líneas son exactamente


iguales a la opción de guardar. Se le asigna al objeto textolectura en su
propiedad text un espacio de memoria de tipo char (“ ”c), con un espacio para
50 caracteres. Se utiliza la función FileGet para leer el contenido del archivo,
éste recibe como parámetros: el numero del archivo (numeroarchivo) y el
objeto textolectura, el cual contendrá el contenido del archivo de texto. Por
último se cierra el archivo.

31
 Ejecutar el proyecto

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


visualizará la figura 1.21. Al escribir un producto y una cantidad en las respectivas cajas
de texto y pulsar el botón Guardar Archivo, se guardará dicha información en el
archivo c:\datosaleatorios.txt”. Al pulsar el botón Leer Archivo, el formulario con la
información leída quedaría de la siguiente forma:

Figura 1.22 Formulario con información de un producto y una cantidad.

1.6 Importar y exportar datos de una hoja de Excel

Hasta el momento se ha trabajado con archivos de texto plano en donde se ha podido


guardar, adicionar y recuperar información. Con Visual Basic .NET también es posible
manipular archivos con otro tipo de formato; por eso en este aparte se exportará datos
desde un proyecto de Visual Basic .NET a un archivo de Excel y se importarán datos de
un archivo de Excel a un proyecto de Visual Basic .NET.

16.1 Ejemplo importar y exportar datos de Excel

Dentro de un proyecto llamado ImportarExportarExcel, hacer un programa que


permita a un usuario exportar y/o importar datos de una hoja de Excel. Cuando se
importe de Excel los datos se deberán mostrar en un control DataGridView de Visual
Basic .NET, así como se deberá solicitar el rango de datos a importar. Al exportar se
deberán enviar todos los datos que contenga el control DataGridView a un archivo de
Excel.

 Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control específico y ubique los


siguientes controles en el formulario en la posición deseada: 1 Label, 1 TextBox, 2
Button y 1 DataGridView.

32
Figura 1.23 Interfaz de usuario (ImportarExportarExcel).

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


Establezca las siguientes modificaciones a los controles:

Tabla 1.7 Propiedades de controles proyecto ImportarExportarExcel.

Control Propiedad Valor


Label1 Name texto
Text Rango a importar de
Excel
Font – Bold true
TextBox1 Name rango
Text A1:D10
DataGridView1 Name tabla
Button1 Name botonimportar
Text Importar de Excel
Button2 Name botonexportar
Text Exportar a Excel
Form1 Name formulario
Text Importar y exportar de
Excel.

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

33
Figura 1.24 Interfaz de usuario modificada (ImportarExportarExcel).

 Escribir código
Antes de escribir código, se deberá crear un archivo en Excel llamado
“importardatos.xls” y en la hoja uno (1) escribir información en el rango A1:D10,
como se muestra en la siguiente figura:

Figura 1.25 Hoja de Excel con datos.

a) Seleccione el objeto botonimportar, dé doble clic para abrir el editor de código


y escriba el siguiente código:
importar_Excel("c:\importardatos.xls", "hoja1", rango.Text, tabla)

Se llama al procedimiento importar_Excel, el cual tiene como


34
parámetros: la ruta y el nombre del archivo de Excel, el nombre de la hoja donde
se encuentran los datos en Excel, el rango de datos a importar y el nombre del
control DataGridView (tabla).

b) Dé doble clic sobre el formulario y cree el siguiente procedimiento Sub:


Private Sub importar_Excel(ByVal archivoexcel As String, ByVal nombrehoja As String,
ByVal rangohoja As String, ByVal tabla As DataGridView)
Try
If System.IO.File.Exists(archivoexcel) Then
Dim conjuntodedatos As System.Data.DataSet
Dim adaptadordedatos As System.Data.OleDb.OleDbDataAdapter
Dim conexion As String = "provider=Microsoft.Jet.OLEDB.4.0; " & "data
Source =" & archivoexcel & "; Extended Properties=Excel 8.0;"
Dim conectordedatos As System.Data.OleDb.OleDbConnection
conectordedatos = New System.Data.OleDb.OleDbConnection(conexion)
Dim selecciondedatos As String = "select * from " & "[" & nombrehoja & "$" &
rangohoja & "]"
adaptadordedatos = New System.Data.OleDb.OleDbDataAdapter
(selecciondedatos,conectordedatos)
conjuntodedatos = New System.Data.DataSet
adaptadordedatos.Fill(conjuntodedatos)
conectordedatos.Close()
With tabla
.DataSource = conjuntodedatos
.DataMember = conjuntodedatos.Tables(0).TableName
End With
conjuntodedatos = Nothing
conexion = Nothing
adaptadordedatos = Nothing
conectordedatos = Nothing
Else
MsgBox("No se ha encontrado el archivo: " & archivoexcel,
MsgBoxStyle.Exclamation)
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try
End Sub

Se crea el procedimiento importar_Excel, el cual recibe como


parámetros: las variables archivoexcel, nombrehoja, rangohoja de tipo String
y tabla de tipo DataGridView. La variable archivoexcel contendrá la ruta y el
nombre del archivo de Excel, nombrehoja almacenará el nombre de la hoja de
Excel, rangohoja obtendrá el rango a importar y tabla visualizará los datos
importados. Utilizando la estructura if y con el método Exists se determina si el
archivo existe. Si es verdadero, se crean las variables: conjuntodedatos de tipo
DataSet para guardar el conjunto de datos a importar; adaptadordedatos de
tipo OleDbDataAdapter, con la cual se obtiene el adaptador de datos OLEDB
para recuperar los datos; conexion de tipo String que contendrá la cadena de
conexión a Excel; conectordedatos de tipo OleDbConnection que representa
una conexión única a un origen de datos; en este caso, se le asigna espacio de
memoria y se le envía como parámetro la cadena de conexión; selecciondedatos
de tipo String a la cual se le asigna la sentencia de selección SQL (select) que
trae los datos de la hoja1(nombrehoja) en el rango específicado (rangohoja).

35
Al adaptador de datos adaptadordedatos se le asigna espacio de memoria,
enviándole como parámetro los datos seleccionados (selecciondedatos) y la
cadena de conexión (conexiondedatos), también se asigna espacio de memoria
de tipo DataSet al objeto conjuntodedatos y el adaptador de datos
(adaptadordedatos) se rellena (fill) con el conjunto de datos. Por otro lado se
cierra la conexión de los datos con close (). Además se asigna a la propiedad
DataSource del objeto tabla el conjunto de datos y al adaptador de datos se le
asigna la lista de datos que contiene el archivo de Excel, por último se liberan
todos los objetos utilizando la palabra clave Nothing (liberar). Si la condición es
falsa se mostrará un mensaje donde se informa que no se pudo encontrar el
archivo de Excel.

c) Seleccione el objeto botonexportar, dé doble clic para abrir el editor de código


y escriba el siguiente código:

exportar_Excel(tabla, tabla.Rows.Count)

Se llama al procedimiento exportar_Excel, el cual tiene como


parámetros: el objeto DataGridView llamado tabla y la cantidad de filas que
contiene dicho objeto utilizando la función Count de la propiedad Rows.

d) Dé doble clic sobre el formulario y cree el siguiente procedimiento Sub:

Private Sub exportar_Excel(ByVal tabla As DataGridView, ByVal nrofilas As Long)


Dim archivo_excel As Object
Dim libro_excel As Object
Dim hoja_excel As Object
Dim i As Integer
Dim j As Integer
Dim iColumnas As Integer
If nrofilas = 0 Then
MsgBox("No hay datos para exportar a excel. Se ha indicado 0 en el parámetro
Filas ") : Exit Sub
Else
archivo_excel = CreateObject("Excel.Application")
libro_excel = archivo_excel.Workbooks.Open("c:\exportardatos.xls")
hoja_excel = archivo_excel.ActiveSheet
iColumnas = 0
For i = 0 To tabla.Columns.Count - 1
If tabla.ColumnHeadersVisible Then
iColumnas = iColumnas + 1
hoja_excel.Cells(1, iColumnas) = tabla.Columns(i).HeaderText
For j = 0 To nrofilas - 1
hoja_excel.Cells(j + 2, iColumnas) = tabla.Item(i, j).Value
Next
End If
Next
archivo_excel.Visible = True
End If
hoja_excel = Nothing
libro_excel = Nothing
archivo_excel = Nothing
End sub

Se crea el procedimiento exportar_Excel, el cual recibe como


parámetros: las variables tabla de tipo DataGridView y nrofilas de tipo long.
36
El objeto tabla contendrá los datos a exportar y nro_filas el número de filas del
objeto tabla. Se definen los objetos archivo_excel, hoja_excel, libro_excel de
tipo Object y se crean las variables i, j, icolumnas de tipo Integer. Utilizando la
estructura if se pregunta si nro_filas es igual a cero (0), si es verdadero se
imprimirá el mensaje de la no existencia de datos en el archivo Excel y se saldrá
del procedimiento por intermedio de la palabra clave exit. En caso contrario se
crea un objeto (CreateObject) que inicializa una aplicación Excel y es asignado
al objeto archivo_excel, al objeto libro_excel se le asigna la ruta y el nombre
del archivo de Excel que se va a abrir utilizando el método Open de
WorkBooks, como también se asigna la hoja activa (ActiveSheet) del archivo
de Excel a hoja_excel. Se inicializa la variable icolumnas en cero y ejecutan
dos ciclos for. En el ciclo externo se recorre la cantidad de columnas existente
en el objeto DataGridView (tabla.Columns.Count - 1). Si el nombre de la
columna es visible se incrementa la variable icolumna en uno (1) y se asigna a
la primera celda en la posición del valor de la variable icolumna el nombre de la
columna del objeto DataGridView utilizando el método HeaderText, en el
ciclo más interno se recorre cada una de las filas del objeto DataGridView y se
coloca en la celda (j, i) el valor que tiene el objeto tabla en la posición (i, j). Por
otro lado, se hace visible (se abre) el archivo de Excel. Por último se liberan
todos los objetos utilizando la palabra clave Nothing (liberar).

 Ejecutar el proyecto
Al ejecutarse el proyecto en el entorno de desarrollo, se visualizará la figura 1.25. Al
escribir el rango A1:D10 y pulsar el botón Importar de Excel, se visualizará la
siguiente figura:

Figura 1.26 Formulario con datos importados de Excel.

Si se pulsa el boton “Exportar a Excel”, se exportarán todos los datos del objeto
tabla y se abrirá el archivo de Excel “exportardatos.xls” en c:\. Dicho archivo debe
existir para que no ocurra ningún error.

37
Figura 1.27 Hoja de Excel con datos exportados desde VB.NET.

1.7 Exportar datos a Word

Con Visual Basic .NET también es posible exportar los datos que existen en un control
de Visual Basic .NET a un archivo de Word. Para esto es necesario agregar una
referencia .NET llamada Microsoft.Office.Interop.Word en el proyecto que se está
trabajando.

1.7.1 Ejemplo de exportar datos de VB.NET a Word

Crear un proyecto llamado ExportarWord y realizar un programa que permita a un


usuario exportar los datos de un control DataGridView de Visual Basic .NET a una
tabla en un archivo de Microsoft Word.

 Agregar referencia
Desde el submenú proyecto seleccione la opción Agregar referencia… y busque el
nombre del componente Microsoft.Office.Interop.Word, se debería visualizar la
siguiente pantalla:

Figura 1.28 Agregar referencia .NET.

38
Al estar seleccionado dicho componente, pulse el botón Aceptar para
incorporarlo al proyecto.

 Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control específico y ubique los


siguientes controles en el formulario en la posición deseada: 1 Button y 1
DataGridView.

Figura 1.29 Interfaz de usuario (ExportarWord).

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


Establezca las siguientes modificaciones a los controles:

Tabla 1.8 Propiedades de controles proyecto ExportarWord.

Control Propiedad Valor


DataGridView1 Name tabla
Button1 Name botonexportar
Text Exportar a Word
Form1 Name formulario
Text Exportar datos a Word.

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

39
Figura 1.30 Interfaz de usuario modificada (ExportarWord).

 Escribir código
a) Seleccione el objeto botonexportar, dé doble clic para abrir el editor de código
y escriba el siguiente código:
Dim archivo_Word As Microsoft.Office.Interop.Word.Application
Dim Documento As Microsoft.Office.Interop.Word.Document
Dim Parrafo As Microsoft.Office.Interop.Word.Table
Dim filas As Integer
Dim columnas As Integer
Dim dato As Object
archivo_Word = New Microsoft.Office.Interop.Word.Application
archivo_Word.Visible = True
Documento = archivo_Word.Documents.Add
Parrafo = Documento.Tables.Add(Documento.Range(0, 0), tabla.RowCount + 1,
tabla.Columns.Count)
For columnas = 0 To tabla.Columns.Count - 1
arrafo.Cell(1, columnas + 1).Range.InsertAfter(tabla.Columns(columnas).HeaderText)
For filas = 0 To tabla.RowCount - 1
dato = tabla.Item(columnas, filas).Value
Parrafo.Cell(filas + 2, columnas + 1).Range.InsertAfter(dato)
Next
Next
archivo_Word = Nothing
Documento = Nothing
Parrafo = Nothing

Se definen los objetos archivo_Word de tipo Aplicación de Word


(Word.application), Documento de tipo documento de Word
(Word.Document), Parrafo de tipo Tabla de Word (Word.Table), como
también se crean las variables filas y columnas de tipo Integer y dato de tipo
Object. Se asigna espacio de memoria al objeto archivo_Word de tipo
Word.Application, se hace visible un archivo de Word y se añade un nuevo
documento de Word con Word.Documents.Add. Al objeto Parrafo se le asigna
una tabla desde un rango (0,0, total_filas, total_columnas). Se ejecutan dos
ciclos For. En el ciclo externo se recorre la cantidad de columnas existentes en
el objeto DataGridView (tabla.Columns.Count - 1) y se asigna a la primera
fila en la posición del valor de la variable columnas+1 el nombre de la columna
del objeto DataGridView utilizando el método HeaderText; en el ciclo más

40
interno se recorre cada una de las filas del objeto DataGridView y se van
asignando a la variable dato el valor de cada celda(columnas, filas) del objeto
tabla y se coloca en la celda (j, i) de la tabla de Word el valor que tiene el objeto
dato. Por último se liberan todos los objetos utilizando la palabra clave Nothing
(liberar).

b) Dé doble clic sobre el formulario para abrir el editor del procedimiento


formulario_load y escriba el siguiente código:

With tabla
.Columns.Add("Código", "Código")
.Columns.Add("Producto", "Producto")
.Columns.Add("Precio", "Precio")
.Columns.Add("Inventario", "Inventario actual")
.Columns.Add("Proveedor", "Nombre Proveedor")
.RowCount = 10
For i As Integer = 0 To .RowCount - 1
.Item(0, i).Value = i.ToString
.Item(1, i).Value = "Producto " & i.ToString
.Item(2, i).Value = FormatNumber(225 + i)
.Item(3, i).Value = CInt(Rnd() * 100)
.Item(4, i).Value = "Proveedor: " & i.ToString
Next
End With

Con el anterior código se llena el objeto tabla con datos. Se le adicionan


cinco nombres, uno en cada columna con el método Add de la propiedad
Columns y se asignan como valor inicial a la propiedad RowCount 10 filas.
Con un ciclo For que se ejecutará desde una posición i igual a cero (0) hasta el
número de filas -1 del objeto tabla y por cada fila se adicionarán cinco ítems. En
la primera columna el valor de i, en la segunda un texto “Producto” unido con
el valor de la variable i, en la tercera el valor 225 sumándole el valor de i, en la
cuarta un número aleatorio entre 0 y 100 y por último un texto “Proveedor”
unido al valor de i.

 Ejecutar el proyecto
Al ejecutarse el proyecto en el entorno de desarrollo de Visual Basic.NET/2008, se
visualizará el formulario con los datos que se asignaron en el procedimiento
formulario_Load, se visualizará la siguiente figura:
Figura 1.31 Formulario con datos cargados desde el load.

41
Al pulsar el botón Exportar a Word, se abrirá un nuevo documento de Word y
se visualizaría lo siguiente:

Figura 1.32 Ventana de Word con los datos exportados de VB.NET.

En este momento puede seleccionar todos los datos y pulsar el icono bordes de
Word y escoger la opción “Todos los bordes” para que el documento presente el
siguiente aspecto:

Figura 1.33 Tabla de Word con datos y bordes.

42
1.8 Ejercicios de archivos

1. Realizar un programa que permita guardar 10 datos y leerlos en un archivo de


texto plano utilizando la clase File.
2. Hacer un programa que permita guardar 10 datos y leerlos en un archivo de texto
plano utilizando las clases StreamWriter y StreamReader.
3. Diseñar un programa que permita guardar 10 datos y leerlos en un archivo de
texto plano utilizando archivos secuenciales.
4. Escribir un programa que permita guardar 10 datos y leerlos en un archivo de
texto plano utilizando archivos binarios.
5. Crear un programa que permita importar todos los datos que existan en un
archivo de Excel y visualizarlos en un ListView.
6. Elaborar un programa que permita importar todos los datos que existan en un
archivo de Excel y visualizarlos en un ListBox.
7. Realizar un programa que permita exportar un rango de datos a una tabla de
Word.
8. Hacer un programa que permita importar los datos de un archivo de texto a un
DataGridView.
9. Crear un programa que permita exportar los datos de un control ListView a
Excel.
10. Escribir un programa que permita exportar los datos de un ListView a Word.

43
2. BASES DE DATOS

Una base de datos es un sistema formado por un conjunto de datos relacionados y


almacenados en discos que permiten el acceso directo a ellos y una serie de programas
que manipulan ese conjunto de datos (SGBD – sistema de gestión de bases de datos).
Cada base de datos se compone de una o más tablas que guardan los datos. Cada tabla
tiene una o más columnas y filas. Las columnas guardan una parte de la información
sobre cada elemento que se quiere guardar en la tabla, cada fila de la tabla conforma un
registro. Un registro contiene campos que pueden ser del mismo tipo de dato o de
diferentes tipos de datos. Entre las principales características de las bases de datos se
pueden mencionar:

 Independencia lógica y física de los datos.


 Redundancia mínima.
 Acceso concurrente por parte de múltiples usuarios.
 Integridad de los datos.
 Consultas complejas optimizadas.
 Seguridad de acceso y auditoría.
 Respaldo y recuperación.
 Acceso a través de lenguajes de programación estándar.

2.1 Tipos de bases de datos

Los tipos de bases datos más comunes son las relacionales y en el mercado existen
varios sistemas de administración de bases de datos de ese tipo, algunos son: SQL
Server, Access, Oracle, MySQL, PostgresSQL, etc.

2.1.1 Relacionales

Son las que más se utilizan. Las bases de datos relacionales son un conjunto de tablas
relacionadas entre sí, cada tabla está definida por una serie de campos. Los campos
forman las columnas de las tablas; estos definen el tipo y la variedad de los datos. Las
filas de datos se denominan registros (tuplas), cada tipo definido en un registro se le
denomina atributo. Las tablas pertenecientes a una base de datos pueden relacionarse
entre sí utilizando campos clave comunes entre las tablas.

2.1.2 Orientada a objetos

El esquema de una base de datos por objetos está representado por un conjunto de clases
que definen las características y el comportamiento de los objetos que poblarán la base
de datos. Con una base de datos orientada a objetos, los objetos memorizados en la base
de datos contienen tanto los datos como las operaciones posibles con tales datos. En
cierto sentido, se podrá pensar en los objetos como en datos a los que se les ha puesto
una inyección de inteligencia que les permite saber cómo comportarse, sin tener que
apoyarse en aplicaciones externas.

2.2 Lenguaje de Consulta Estructurado (S.Q.L.)

Es un lenguaje de base de datos normalizado, utilizado por los diferentes motores de


bases de datos para realizar determinadas operaciones sobre los datos o sobre la

44
estructura de los mismos. El lenguaje SQL está compuesto por comandos, cláusulas,
operadores y funciones de agregado. Estos elementos se combinan en las instrucciones
para crear, actualizar y manipular las bases de datos.

2.2.1 Comandos

Existen dos tipos de comandos SQL:

 DLL que permiten crear y definir nuevas bases de datos, tablas, campos e índices.
 DML que permiten generar consultas para ordenar, filtrar y extraer datos de la base de
datos.

Tabla 2.1 Comandos DLL y DML de SQL.

Comandos DLL
Comando Descripción
CREATE Utilizado para crear nuevas bases de datos, tablas, campos e índices.
DROP Empleado para eliminar bases de datos, tablas e índices.
Utilizado para modificar las tablas agregando campos o cambiando la
ALTER
definición de los campos.
Comandos DML
Utilizado para consultar registros de la base de datos que satisfagan un
SELECT
criterio determinado.
Utilizado para cargar lotes de datos en la base de datos en una única
INSERT
operación.
UPDATE Utilizado para modificar los valores de los campos y registros específicados.
DELETE Utilizado para eliminar registros de una tabla de una base de datos.

2.2.2 Cláusulas

Las cláusulas son condiciones de modificación utilizadas para definir los datos que se
desea seleccionar o manipular.

Tabla 2.2 Cláusulas SQL.

Cláusula Descripción
FROM Para específicar la tabla de la cual se van a seleccionar los registros.
Para específicar las condiciones que deben reunir los registros a
WHERE
seleccionar.
GROUP BY Utilizada para separar los registros seleccionados en grupos específicos.
HAVING Utilizada para expresar la condición que debe satisfacer cada grupo.
ORDER BY Para ordenar los registros seleccionados.

45
2.2.3 Operadores lógicos

Los operadores lógicos comprueban la veracidad de alguna condición. Éstos devuelven


el tipo de datos Boolean con el valor TRUE o FALSE.

Tabla 2.3 Operadores lógicos SQL.

Operador Uso
Es el "y" lógico. Evalúa dos condiciones y devuelve un valor de
AND
verdad sólo si ambas son ciertas.
Es el "o" lógico. Evalúa dos condiciones y devuelve un valor de
OR
verdad si alguna de las dos es cierta.
NOT Negación lógica. Devuelve el valor contrario de la expresión.
BETWEEN Utilizado para específicar un intervalo de valores.
LIKE Utilizado en la comparación de un patrón.
IN Utilizado para específicar registros de una base de datos.
ALL Devuelve True si el conjunto de comparaciones en verdad.

2.2.4 Operadores de Comparación

Los operadores de comparación comprueban si dos expresiones son iguales,


devolviendo un valor booleano True o False. Se pueden utilizar en todas las
expresiones excepto en las de los tipos de datos text, ntext o image.

Tabla 2.4 Operadores de comparación SQL.

Operador Uso
< Menor que
> Mayor que
<> Distinto de
<= Menor o igual que
>= Mayor o igual que
= Igual que

2.2.5 Funciones de agregado

Las funciones de agregado realizan un cálculo sobre un conjunto de valores y devuelven


un solo valor. Si exceptuamos la función COUNT, todas las funciones de agregado
ignoran los valores NULL. Las funciones de agregado se suelen utilizar con la cláusula
GROUP BY de la instrucción SELECT.

46
Tabla 2.5 Funciones de agregado SQL.

Función Descripción
Utilizada para calcular el promedio de los valores de un campo
AVG
determinado.
COUNT Utilizada para devolver el número de registros de la selección.
Utilizada para devolver la suma de todos los valores de un campo
SUM
determinado.
MAX Utilizada para devolver el valor más alto de un campo específicado.
Utilizada para devolver el valor más bajo de un campo
MIN
específicado.

2.3 Sentencias Básicas SQL

Se describirá muy brevemente algunas de las sentencias SQL para la manipulación de


los datos de una tabla. Para trabajar las sentencias a continuación, se supondrá que se
tiene creada una tabla llamada usuarios con la siguiente estructura:

Tabla 2.6 Estructura de los campos de la tabla USUARIOS.

Campo Tipo de Dato Longitud


identificacion varchar 15
nombres varchar 20
apellidos varchar 20
dirección varchar 25
teléfono varchar 20
ciudad_nac varchar 20
fecha_nac date

Y que contiene la siguiente información:

Tabla 2.7 Información de la tabla usuarios.

Identificación Nombres Apellidos Dirección Teléfono Ciudad_nac Fecha_nac


100 Carlos Romero Cra 7 # 20-10 4152584 Bogota 01/02/1980
101 María Castro Calle 25 # 25-10 3692581 Cali 15/03/1984
112 José Peláez Av. 35 # 32-45 1234567 Medellín 20/05/1960
114 Cristian Vanegas Cra 7 # 29-58 9874561 Manizales 31/08/1974
116 Rosa Cetina Calle 17 # 21-14 3571596 Buga 15/12/1985
118 Andrés Vanegas Tranvs 48 # 22-10 8527419 Bogotá 10/04/1978
130 Angélica Morales Cra 68 # 21-11 6549518 Medellín 20/06/1981
150 Johana Duarte Cra 2 # 45-38 9637534 Bogotá 12/06/1988
170 Mario Vargas Calle 1 # 99-18 6598743 Medellín 28/08/1980

2.3.1 CREATE DATABASE

El comando CREATE DATABASE permite crear una base de datos. Su formato es:
CREATE DATABASE <nombre_base_de_datos)

47
2.3.2 DROP DATABASE

El comando DROP DATABASE permite eliminar una base de datos que previamente
se había creado. Su formato es:

DROP DATABASE <nombre_base_de_datos_a_eliminar>

2.3.3 CREATE TABLE

El comando CREATE TABLE permite crear una tabla. Con este comando se
específica el nombre de la tabla, las columnas y sus tipos de datos, las claves primarias
y si es necesario, la clave externa. Su formato es:

CREATE TABLE nombre_tabla (campo1 tipodato DEFAULT,., campo2 tipodato, DEFAULT)

La cláusula DEFAULT indica la característica de cada columna: NOT NULL


(no permite valores nulos), UNIQUE (dos filas no pueden tener un mismo valor en la
misma columna), PRIMARY KEY (define una columna como clave principal).

2.3.4 DROP TABLE

El comando DROP TABLE permite eliminar una tabla que previamente se había
creado. Su formato es:

DROP TABLE nombre_tabla

2.3.5 INSERT

La sentencia SQL de inserción de datos INSERT permite insertar información en una


tabla. Su formato es:

INSERT INTO nombre_tabla (campo1, campo2,….) VALUES (valor1, valor2,….)

Para insertar un nuevo registro a la tabla usuarios se debería realizar la siguiente


sentencia:

INSERT INTO usuarios (identificación, nombres, apellidos, dirección, teléfono, ciudad_nac,


fecha_nac) VALUES ( ‘160’, ’Carmen’, ’Bolívar’, ’Calle 100 # 115-55’,’2014201’, ’Barranquilla’,
’18/11/1692’)

2.3.6 ALTER

La sentencia SQL ALTER permite insertar un nuevo campo en una tabla. Su formato
es:
ALTER TABLE nombre_tabla ADD nombre_campo tipo_de_dato ()

Para insertar un nuevo campo a la tabla usuarios llamado credito de tipo


numérico se debería realizar la siguiente sentencia:

ALTER TABLE usuarios ADD credito numeric (18,0)

48
2.3.7 SELECT

La sentencia SQL que más se utiliza es la instrucción de selección SELECT. Como su


nombre lo indica, es una instrucción que permite seleccionar información de una tabla.
Su formato es:
SELECT campos_tabla FROM nombre_tabla

A continuación se realizan algunos ejemplos:

a) Para visualizar toda la información que contiene la tabla usuarios se puede


incluir con la instrucción SELECT el carácter ‘*’ o cada uno de los campos de la
tabla.
SELECT * FROM usuarios
O
SELECT identificación, nombres,…….. FROM usuarios

b) Para visualizar solamente la identificación del usuario

SELECT identificacion FROM usuarios

c) Si se desea obtener los registros cuya identificación sea menor o igual a 116, se
debe utilizar la cláusula WHERE que específica las condiciones que deben
reunir los registros que se van a seleccionar.

SELECT * FROM usuarios WHERE identificación<=’116’

d) Si se desea obtener los registros cuyos nombres sean Andrés o Cristian, se debe
utilizar el operador IN que específica los registros que se quieren visualizar de
una tabla.

SELECT nombres FROM usuarios WHERE nombres IN (‘Andres’,’Cristian’)

O se puede utilizar el operador OR


SELECT * FROM usuarios WHERE nombres=‘Andrés’ OR nombres=’Cristian’

e) Si se desea obtener los registros cuya identificación sea menor de ‘130’ y la


ciudad sea ‘Bogota’, se debe utilizar el operador AND.

SELECT * FROM usuarios WHERE identificación<=‘130’ AND ciudad=’Bogota’

f) Si se desea obtener los registros cuyos nombres empiecen por la letra ‘C’, se
debe utilizar el operador LIKE que utiliza los patrones ‘%’ (todos) y ‘_’
(carácter).

SELECT * FROM usuarios WHERE nombres LIKE ‘C%’

g) Si se desea obtener los registros cuyos nombres contenga la letra ‘i’.

SELECT * FROM usuarios WHERE nombres LIKE ‘%i%’

h) Si se desea obtener los registros donde la segunda letra del nombre sea una ‘o’.

49
SELECT * FROM usuarios WHERE nombres LIKE _o%’

i) Si se desea obtener los registros cuya identificación esté entre el intervalo 116 y
140, se debe utilizar la cláusula BETWEEN, que sirve para específicar un
intervalo de valores.

SELECT * FROM usuarios WHERE identificación BETWEEN ’116’ AND ‘140’

2.3.8 DELETE

La sentencia SQL de eliminación de datos DELETE permite borrar todos o un grupo


específico de registros de una tabla. Su formato es:

DELETE FROM nombre_tabla

A continuación se realizarán algunos ejemplos:

a) Para eliminar todos los registros de la tabla usuarios.

DELETE FROM usuarios

b) Para eliminar solamente los registros cuya identificación sea mayor de ‘150’.

DELETE FROM usuarios WHERE identificación >’150’

c) Para eliminar los registros diferentes del nombre “Cristian”

DELETE FROM usuarios WHERE nombres NOT IN (‘Cristian’)

2.3.9 UPDATE

La sentencia SQL de actualización UPDATE permite actualizar un campo de una tabla.


Su formato es:

UPDATE nombre_tabla SET nombre_campo=criterio

A continuación se realizan algunos ejemplos:

a) Para actualizar el campo credito con un valor de 100000 en la tabla usuarios.

UPDATE usuarios SET credito=100000

b) Para actualizar el campo credito en 200000 para los registros cuyo nombre
empiecen por ‘A’.

UPDATE usuarios SET credito=credito +200000 WHERE nombres LIKE ‘A%’

c) Para actualizar el campo credito en 50000 para los registros cuya ciudad sea
igual a ‘Bogota’.

UPDATE usuarios SET credito=credito+50000 WHERE ciudad=’Bogota’

50
2.3.10 INNER JOIN

Permite recuperar datos de 2 o más tablas. Cuando se realiza la concatenación de las


tablas, no necesariamente se deben mostrar todos los datos de las tablas, o sea, se
pueden mostrar los campos que en realidad se desea ver. Su formato es:

SELECT tabla1.campo, tabla2.campo, tabla1.campo2,…. FROM tablaprincipal


INNER JOIN tablasecundaria ON campocomuntabla1=campocomuntabla2

Para realizar algunos ejemplos explicativos se utilizara la tabla usuarios y


además se supondrá que se tiene otra tabla llamada pedidos, que contendrá la siguiente
estructura:

Tabla 2.8 Estructura de los campos de la tabla USUARIOS.

Campo Tipo de Dato Longitud


nropedido varchar 15
identificacion varchar 15
fechacompra date 20
fechavence date 25
observacíon varchar 30

Y que contiene la siguiente información:

Tabla 2.9 Información de la tabla usuarios.

nropedido Identificación fechacompra fechavence observacíon


10 100 01/02/2006 01/02/2006 Pago de contado
20 101 15/03/2006 15/03/2006 Descuento del 5%
30 100 20/05/2006 20/06/2006 Descuento del 2%
40 112 31/08/2006 31/10/2006 Pago a sesenta días
50 101 15/12/2006 30/12/2006 Pago de contado
60 118 10/04/2006 10/06/2006 Sin descuento
70 101 20/06/2006 20/07/2006 Descuento del 5%
80 100 12/06/2006 12/09/2006 Pago a noventa días
90 101 28/08/2006 28/09/2006 Pago de contado

a) Para visualizar los campos identificación, nombres, apellidos de la tabla usuarios


y nropedido, fecha de compra, fecha de vencimiento y observación de la tabla
pedidos, se debe realizar la siguiente instrucción:

SELECT usuarios.identificacion, usuarios.nombres, usuarios.apellidos,


pedidos.nropedido, pedidos.fechacompra, pedidos.fechavence,
pedidos.observacíon
FROM usuarios INNER JOIN pedidos
ON usuarios.identificacion = pedidos.identificacion

b) Para visualizar todos campos de las tablas usuarios y pedidos donde


identificación sea igual a 100, se debe realizar la siguiente instrucción:

SELECT usuarios.*, pedidos.*


FROM usuarios INNER JOIN pedidos
ON usuarios.identificacion = pedidos.identificacion
WHERE usuarios.identificacion=100

51
2.4 Conexión a bases de datos

Visual Basic .NET utiliza la tecnología ADO.NET que permite el acceso a bases de
datos mediante proveedores para sistemas administradores de bases de datos que
funcionan en el entorno .NET. La plataforma .NET incorpora cuatro proveedores: SQL
SERVER, ORACLE, ODBC (Access), OLEDB.

ADO.NET proporciona acceso a orígenes de datos como Microsoft SQL Server


y XML, así como a orígenes de datos OLE DB y ODBC. Las aplicaciones para usuarios
que comparten datos pueden utilizar ADO.NET para conectar a estos orígenes de datos
y recuperar, manipular y actualizar los datos contenidos.

ADO.NET es un conjunto de clases que se encuentran en el archivo


System.Data.dll y está integrada con las clases del archivo System.Xml.dll. Cuando se
compila un código que utiliza el espacio de nombres System.Data se hace referencia a
dichos archivos. Estas clases sirven para separar el acceso a la base de datos y la
manipulación de los mismos.

Sus principales clases son:

 DataSet: Es el conjunto de datos donde se pueden incluir una o más tablas con
la información acerca de las relaciones entre éstas, y las restricciones que
puedan tener los datos.
 DataTable: Permite la manipulación de los datos en la memoria y realiza
operaciones como exploración, ordenación, edición, aplicación de filtros,
creación de vistas, etc.
 DataView: Permite representar los datos de la clase DataTable, creando
múltiples vistas de los mismos.

Los proveedores de datos proporcionan el puente entre las bases de datos y las
aplicaciones. Los principales objetos de un proveedor de datos .NET son:

 Connection: Sirve para establecer una 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.
 Command: Sirve para ejecutar sentencias SQL y devolver resultados de una
base de datos. Se utiliza SqlCommand para una conexión a SQL Server,
OleDbCommand para una conexión a Access y OracleCommand para Oracle.
 DataAdapter: Es el adaptador de datos, el cual es un conjunto de objetos para
intercambiar datos entre una base de datos y un conjunto de datos. Se utiliza
SqlDataAdapter para una conexión a SQL Server, OleDataAdapter para una
conexión a Access y OracleDataAdapter para Oracle.

2.5 Ejemplos de conexión a bases de datos

2.5.1 Conexión a una base de datos de SQL Server

Dentro de un proyecto llamado ConexionBDSQLSERVER, realizar un programa que


permita a un usuario hacer una conexión a una base de datos de SQL Server y mostrar

52
los datos de una tabla en un objeto DataGridView, utilizando código de Visual Basic
.NET.

NOTA: para este ejemplo el usuario debe tener instalado Microsoft SQL SERVER
2005 o posterior y crear una base de datos llamada bdlibrovbnet (Ver anexo C, SQL
Server) y dentro de ella una tabla llamada clientes, con la siguiente estructura:

Figura 2.1 Estructura tabla clientes en SQL Server.

Dicha tabla debe contener unos registros para poder consultarlos. La siguiente
figura muestra el aspecto de la tabla con los datos:

Figura 2.2 Tabla clientes con datos SQL Server.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario en la posición deseada: 1 Button, 1 Label y 1
DataGridView.

53
Figura 2.3 Interfaz de usuario (ConexionBDSQLSERVER).

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

Establezca las siguientes modificaciones a los controles:

Tabla 2.10 Propiedades de controles proyecto ConexionBDSQLSERVER.


Nombre del proyecto: ConexionBDSQLSERVER
Control Propiedad Valor
DataGridView1 Name tabla
Button1 Name boton
Text Mostrar datos tabla
Label1 Name titulo
Text Conexión a una base de datos de SQL
SERVER.
Font True
Form1 Name formulario
Text Conexión BD SQL SERVER - Clientes.

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

Figura 2.4 Interfaz de usuario modificada (ConexionBDSQLSERVER).

54
 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

El espacio de nombres System.Data.SqlClient es necesario para utilizar las


diferentes clases que permitan las operaciones con bases de datos, en este caso SQL
Server.

b) Seleccione el objeto boton, dé doble clic para abrir el editor de código y escriba
el siguiente código:

Dim conexion As String


conexion = "Data Source=(local)\SQLEXPRESS;Database=bdlibrovbnet;Integrated
Security=True"
Dim seleccion As String = "SELECT * FROM clientes"
Dim adaptadordedatos As SqlDataAdapter
Dim tabladedatos As New DataTable
Try
adaptadordedatos = New SqlDataAdapter(seleccion, conexion)
adaptadordedatos.Fill(tabladedatos)
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 de SQL Server. La cadena de conexión debe contener
como mínimo los siguientes parámetros:

 Data Source: Se le asigna la ruta donde se encuentra el servidor SQL


Server, en este caso, SQL Server se instalo en el computador de
trabajo por lo cual el nombre del servidor es localhost o como
dirección IP 127.0.0.1.
 Database: Se le asigna el nombre de la base de datos a la que se
quiere conectar.
 Integrated Security: Se le asigna true o false para determinar si la
seguridad es integrada o no.

Luego se crean los siguientes objetos: seleccion de tipo String a la cual se le


asigna todos los datos que se quiere mostrar, en este caso todos los registros de la
tabla clientes (Select * from Clientes); adaptadordedatos de tipo
SqlDataAdapter, el cual será el adaptador de datos para la base de datos a
manipular; tabladedatos se le asigna espacio de memoria de tipo DataTable para
guardar los datos en memoria y poder realizar operaciones con dichos datos. En un
bloque Try se le asigna espacio de memoria de tipo SqlDataAdapter al objeto

55
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) y por último al objeto tabla en su
propiedad DataSource se le establece el conjunto de datos que se van a mostrar al
asignársele la tabla de datos. Por el bloque Catch se establece un mensaje en caso
de que ocurra un error.

 Ejecutar el proyecto

Al ejecutarse el proyecto y pulsar el botón Mostrar datos tabla, se visualizará el


formulario con los datos de la tabla clientes de SQL Server:

Figura 2.5 Formulario con datos de la tabla clientes de SQL Server.

2.5.2 Conexión a una base de datos de ACCESS

Crear un proyecto llamado ConexionBDACCESS y diseñar un programa que permita a


un usuario realizar una conexión a una base de datos de ACCESS y mostrar los datos de
una tabla en un objeto DataGridView, utilizando código de Visual Basic .NET.

NOTA: para este ejemplo el usuario debe tener instalado Microsoft Access y crear una
base de datos llamada bdaccesslibrovbnet y dentro de ella una tabla llamada clientes
(búsque en Internet cómo crear una base de datos y una tabla en Microsoft Access), con
la siguiente estructura:

Figura 2.6 Estructura tabla clientes en Access.

56
Dicha tabla debe contener unos registros para poder consultarlos. La siguiente
figura muestra el aspecto de la tabla con los datos:

Figura 2.7 Tabla clientes con datos en Access.

 Crear la interfaz de usuario.

Utilizando el cuadro de herramientas haga clic en el control específico y ubique los


siguientes controles en el formulario en la posición deseada: 1 Button, 1 Label y 1
DataGridView.

Figura 2.8 Interfaz de usuario (ConexionBDACCESS).

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


Establezca las siguientes modificaciones a los controles:

Tabla 2.11 Propiedades de controles proyecto ConexionBDACCESS.


Control Propiedad Valor
DataGridView1 Name tabla
Button1 Name boton
Text mostrar datos tabla
Label1 Name titulo
Text Conexión a una base de datos de
ACCESS.
Font True
Form1 Name formulario
Text Conexión a ACCESS – tabla Clientes.

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

Figura 2.9 Interfaz de usuario modificada (ConexionBDACCESS).

 Escribir código

a) Antes de la apertura de la clase formulario se debe importar el espacio de


nombres system.data.OleDb:
Imports System.Data.OleDb
Public Class Form1
….
……
End Class

El espacio de nombres System.Data.OleDb es necesario para utilizar las


diferentes clases que permitan las operaciones con la base de datos Access.

b) Seleccione el objeto boton, dé doble clic para abrir el editor de código y escriba
el siguiente código:

Dim conexion As String


conexion = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" &
"f:\bdaccess\bdaccesslibrovbnet.mdb" & ";"
Dim seleccion As String = "SELECT * FROM clientes"
Dim adaptadordedatos As OleDbDataAdapter
Dim tabladedatos As New DataTable
Try
adaptadordedatos = New OleDbDataAdapter(seleccion, conexion)
adaptadordedatos.Fill(tabladedatos)
tabla.DataSource = tabladedatos
Catch ex As Exception
MsgBox("Error: " & ex.Message)
End Try

58
Con relación al código que se realizó para conectarse a la base de datos SQL
Server, se efectuarón dos cambios, a saber:

1) Cadena de conexión: Dicha conexión debe contener como mínimo los


siguientes parámetros:
 Provider: Es el proveedor del sistema administrador de bases de
datos, en este caso es Microsoft.Jet.OLEDB.4.0, el cual es el
proveedor de la base de datos Access.
 Data Source: Se específica la ruta y el nombre de la base de datos a
utilizar.

2) Adaptador de datos: se cambia el adaptador de datos SqlDataAdapter por


OleDBDataAdapter.

 Ejecutar el proyecto

Al ejecutarse el proyecto y pulsar el botón mostrar datos tabla, se visualizará el


formulario con los datos de la tabla clientes de Access:

Figura 2.10 Formulario con datos de la tabla clientes de Access.

2.5.3 Conexión a una base de datos de ORACLE con código

Realizar un proyecto llamado ConexionBDORACLE, y desde allí permitir a un


usuario realizar una conexión a una base de datos de Oracle 10g Express Edition y
mostrar los datos de una tabla en un objeto DataGridView.

NOTA: para este ejemplo el usuario debe tener instalada la base de datos Oracle 10g
Express Edition (Ver anexo D, Oracle Database 10g Express), e ingresar con el

59
usuario y clave creados cuando se realiza la instalación del Oracle y crear una tabla
llamada clientes, con la siguiente estructura:

Figura 2.11 Estructura tabla clientes en Oracle.

Dicha tabla debe contener unos registros para poder consultarlos. La siguiente
figura muestra el aspecto de la tabla con los datos en Oracle:

Figura 2.12 Tabla clientes con datos en Oracle.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario en la posición deseada: 1 Button, 1 Label y 1
DataGridView.

60
Figura 2.13 Interfaz de usuario (ConexionBDORACLE).

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


Establezca las siguientes modificaciones a los controles:

Tabla 2.12 Propiedades de controles proyecto ConexionBDORACLE.


Control Propiedad Valor
DataGridView1 Name tabla
Button1 Name boton
Text Mostrar datos tabla
Label1 Name titulo
Text Conexión a una Base de Datos de
ORACLE.
Font True
Form1 Name formulario
Text Conexión a ORACLE – tabla Clientes.

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

Figura 2.14 Interfaz de usuario modificada (ConexionBDORACLE).

61
 Escribir código

a) Antes de la apertura de la clase formulario se debe importar el espacio de


nombres System.Data.OleDb:
Imports System.Data.OleDb
Public Class Form1
….
……
End Class

El espacio de nombres System.Data.OleDb es necesario para utilizar las diferentes


clases que permitan las operaciones con una base de datos Oracle.

b) Seleccione el objeto boton, dé doble clic para abrir el editor de código y escriba
el siguiente código:

Dim conexion As String


conexion = "Provider=MSDAORA.1;User ID=system;password=123456;" &
"Data Source=localhost;Persist Security Info=False"
Dim seleccion As String = "SELECT * FROM clientes"
Dim adaptadordedatos As OleDbDataAdapter
Dim tabladedatos As New DataTable
Try
adaptadordedatos = New OleDbDataAdapter(seleccion, conexion)
adaptadordedatos.Fill(tabladedatos)
tabla.DataSource = tabladedatos
Catch ex As Exception
MsgBox("Error: " & ex.Message)
End Try

Con relación al código que se realizo para conectarse a la base de datos


ACCESS, se hizo solamente el cambio de la cadena de conexión. Dicha conexión
debe contener como mínimo los siguientes parámetros:

 Provider: Es el proveedor del sistema administrador de bases de


datos, en este caso es MSDORA.1, el cual es el proveedor de la base
de datos ORACLE.
 User: es la identificación del usuario y su respectiva clave.
 Data Source: Se le específica la dirección del servidor donde se
encuentra la base de datos a utilizar.
 Persist Security Info: Se le asigna true o false para determinar si la
seguridad es persistente o no.

 Ejecutar el proyecto

Al ejecutarse el proyecto y pulsar el botón Mostrar datos tabla, se visualizará el


formulario con los datos de la tabla clientes de Oracle:

62
Figura 2.15 Formulario con datos de la tabla clientes de Oracle.

2.6 Conexión a una bases de datos con el explorador de servidores

También es posible establecer una conexión y realizar operaciones con una base de
datos utilizando la herramienta Explorador de servidores (explorador de bases de
datos – Visual Basic .NET /2005) del menú Ver, el cual tiene asociados las opciones:
Actualizar, Detener Actualización, Conectar con Base de Datos y Conectar con el
Servidor. Esta herramienta mantiene las conexiones definidas y/o permite definir
nuevas. Cada conexión define un nodo con la estructura de la base de datos.

2.6.1 Conexión a SQL Server con el Explorador de servidores

Dentro de un proyecto llamado ConexionConExploradorServidores, realizar un


programa que permita a un usuario hacer una conexión a una base de datos de SQL
Server y mostrar los datos de una tabla en un objeto DataGridView utilizando el
Explorador de servidores de Visual Basic. NET.

NOTA: para este ejemplo se utilizará la base de datos llamada bdlibrovbnet de SQL
Server (Ver anexo C, conectarse a SQL Server) y la tabla llamada clientes de dicha
base de datos.

 Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control específico y ubique los


siguientes controles en el formulario en la posición deseada: 1 Label y 1
DataGridView.

63
Figura 2.16 Interfaz de usuario (ConexionConExploradordeServidores).

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


Establezca las siguientes modificaciones a los controles:

Tabla 2.13 Propiedades de los controles de ConexionConExploradordeServidores


Control Propiedad Valor
DataGridView1 Name tabla
Label1 Name texto
Text Conexión a SQL Server con el
Explorador de servidores.
Font True
Form1 Name formulario
Text Conexión con Explorador de servidores.

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

Figura 2.17 Interfaz de usuario con controles modificados.

64
 Explorador de servidores..

Del menú Ver seleccione la opción Explorador de servidores, para visualizar la


siguiente figura:

Figura 2.18 Ventana Explorador de servidores.

Al pulsar el icono conectar con bases de datos , se visualizará la ventana de


Agregar conexión como muestra la figura:

Figura 2.19 Ventana Agregar conexión.

65
En esta ventana se puede realizar básicamente lo siguiente:

 Elegir proveedor base de datos: se puede cambiar el proveedor de la base de


datos. Por omisión se carga el sistema administrador de base de datos SQL Server.
 Elegir base de datos: permite elegir la base de datos a utilizar.
 Probar la conexión: permite saber si una conexión ha sido exitosa o no.
 Modificar la cadena de conexión: con la opción Avanzadas se puede modificar la
conexión.

Para el ejemplo, seleccione la base de datos bdlibrovbnet.mdf, la cual se encuentra


en la carpeta data de SQL Server (si la instalación la realizó en c:\ la ruta sería:
C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\Data. Si desea
puede probar la conexión y si fue exitosa se mostrará el mensaje ”La conexión de
prueba se realizó correctamente”.

Figura 2.20 Ventana con la base de datos seleccionada y la prueba de conexión.

Pulse los botones Aceptar hasta visualizar la siguiente figura:

Figura 2.21 Explorador de servidor con la conexión a la base de datos.

66
Al pulsar en el signo (+) al lado del nombre de la base de datos se visualizará la
estructura definida en la base de datos. Si desea ver las tablas que contiene la base de
datos pulse el signo (+) al lado de Tablas.

Figura 2.22 Estructura de la base de datos bdlibrovbnet.mdf.

Ahora seleccione el objeto DataGridView llamado tabla y en la flecha que


aparece en el lado superior derecho, dé clic en el mouse para visualizar las Tareas de
DataGridView:

Figura 2.23 Ventana de las Tareas del DataGridView.

Seleccione la opción Elegir origen de datos, para visualizar la siguiente figura:

Figura 2.24 Ventana Elegir origen de datos.

67
Ahora seleccione la opción Agregar origen de datos del proyecto, se
visualizará la siguiente ventana:

Figura 2.24 Asistente para la configuración de orígenes de datos.

Seleccione el objeto Base de datos y pulse el botón Siguiente>, para visualizar


la ventana de elección de la conexión de datos. Pulse la ventana y seleccione la base de
datos bdlibrovbnet.mdf:

Figura 2.25 Ventana Elegir la conexión de datos.

Al seleccionar la base de datos que se va a trabajar y pulsando el botón


Siguiente> se visualiza el siguiente mensaje:

Figura 2.26 Ventana Microsoft Visual Studio.

68
Pulse el botón Sí para copiar el archivo de datos en la carpeta en donde guardó el
proyecto y se visualizará la ventana de guardar cadena de conexión:

Figura 2.27 Ventana Guardar cadena de conexión.

Cambie el nombre de la conexión que allí aparece por conexionsqlserver y


pulse el botón Siguiente>, se visualizará la siguiente figura:

Figura 2.28 Ventana de elección de objetos de la base de datos.

Pulse el signo (+) al lado de Tablas para desplegar las tablas de la base de datos
y seleccione la tabla clientes. Por otro lado, cambie el nombre del DataSet que allí
aparece por conjuntodedatos y pulse el botón Finalizar para visualizar la figura:

69
Figura 2.29 DataGridView con los campos de la tabla clientes.

Como se puede apreciar, se crearon tres nuevos objetos: el objeto conjuntodedatos


que contendrá los datos seleccionados, el objeto ClientesBindingSource que en su
propiedad DataSource se le asignará el objeto conjuntodedatos y en la propiedad
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
Al ejecutarse el proyecto, se visualizará en el formulario los datos de la tabla clientes en
el objeto DataGridView de la base de datos bdlibrovbnet.mdf de SQL Server:

Figura 2.30 DataGridView con los datos de la tabla clientes de SQL Server.

70
2.7 Ejercicios de conexión a bases de datos

1. Diseñar un programa que permita realizar una conexión a una base de datos y
mostrar datos de una tabla en un control ComboBox.
2. Crear un programa que permita realizar una conexión a una base de datos y
mostrar datos de una tabla en un control ListView.
3. Realizar un programa que permita realizar una conexión a una base de datos y
mostrar datos de una tabla en un control ListBox.
4. Elaborar un programa que permita realizar una conexión a una base de datos y
mostrar los datos de una tabla en un campo de texto.
5. Realizar un programa que permita realizar una conexión a una base de datos y
mostrar los campos de una tabla en un Label.
6. Hacer un programa que permita realizar una conexión a una base de datos
MySQL y mostrar datos de una tabla en una cuadrícula.
7. Diseñar un programa que permita realizar una conexión a una base de datos en
Oracle utilizando la herramienta explorador de servidores y mostrar los datos de
una tabla en campos de texto.
8. Crear un programa que permita realizar una conexión a una base de datos en
Access utilizando la herramienta explorador de servidores y mostrar los datos de
una tabla en Label.
9. Elaborar un programa que permita realizar una conexión a una base de datos en
MySQL y mostrar los datos de una tabla en un ListBox.
10. Realizar un programa que permita hacer una conexión a una base de datos en
MySQL y mostrar los datos de una tabla en un control ListView.

71
3. DESPLAZAMIENTO POR LOS REGISTROS DE UNA TABLA

Hasta el momento con los ejemplos se ha realizado una conexión a una base de datos ya
sea utilizando código o por medio de la herramienta Explorador de servidores y
recurriendo al control DataGridView, visualizándose los registros de una tabla
específica. Ahora lo que se pretende es que el usuario, aparte de visualizar la
información que contenga una tabla, también pueda desplazar o moverse por cada uno
de los registros que contenga dicha tabla. Está operación la podrá realizar en un
formulario utilizando campos de texto (TextBox) o una cuadrícula (DataGridView) y
poder desplazarse por cada uno de los registros por medio de botones (Button) o de un
control BindingNavigator. Para esto es necesario implementar las opciones de
movimiento de registros: ir al primer registro, al siguiente registro, al anterior registro y
al último registro.

3.1 Ejemplos de desplazamiento por los registros de una tabla

3.1.1 Formulario con campos de texto y botones

Dentro de un proyecto llamado MovregCampotexto, realizar un programa que


permita visualizar cada registro de la tabla clientes de la base de datos
bdlibrovbnet.mdf de SQL Server en campos de texto. El usuario deberá poder
desplazarse por cada registro de la tabla utilizando los botones: Primero, Siguiente,
Anterior y Último.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario en la posición deseada: 4 Button, 7 Label y 6
TextBox.

Figura 3.1 Interfaz de usuario (MovRegCampoTexto).

72
 Establecer las propiedades de los objetos de la interfaz de usuario
Establezca las siguientes modificaciones a los controles:

Tabla 3.1 Propiedades de controles proyecto MovRegCampoTexto.


Nombre del proyecto: MovRegCampoTexto
Control Propiedad Valor
Label1 Name texto
Text Desplazamiento registros – tabla
clientes.
Font true
Label2 Name tnit
Text Nit:
Label3 Name tempresa
Text Empresa:
Label4 Name trepresentante
Text Representante:
Label5 Name tdireccion
Text Dirección:
Label6 Name ttelefono
Text Teléfono:
Label7 Name tciudad
Text ciudad
Textobox1…Textbox6 Name campo1….campo6
Text blanco
Button1 Name botonprimero
Text Primero
Button2 Name botonsiguiente
Text Siguiente
Button3 Name botonanterior
Text Anterior
Button4 Name botonúltimo
Text Último
Form1 Name formulario
Text Desplazamiento de Registros de
una tabla.

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

Figura 3.2 Interfaz de usuario modificada (MovRegCampoTexto).

73
 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:

Figura 3.3 Ventana Elegir la conexión de datos

Dé clic en el botón Nueva Conexión. En la ventana que se visualiza elija como


origen de datos Microsoft SQL Server y la base de datos bdlibrovbnet.

Figura 3.4 Ventana Agregar conexión.

Pulse el botón Aceptar, para visualizar nuevamente la ventana de Elegir la


conexión de datos. Allí pulse Siguiente> para visualizar el siguiente mensaje:

74
Figura 3.5 Ventana Microsoft Visual Studio.

Pulse el botón Sí para copiar el archivo de datos en la carpeta en donde guardó el


proyecto. El Explorador de soluciones visualizaría la base de datos como muestra la
figura:

Figura 3.6 Ventana Explorador de soluciones.

Y también se visualizará la ventana de elección de tipo de comando:

Figura 3.7 Ventana elección tipo de comando.

Por omisión está seleccionada la opción Usar Instrucciones SQL. Pulse


Siguiente> para visualizar la ventana de generación de instrucciones SQL.

75
Figura 3.8 Ventana Generar las instrucciones SQL.

Aquí se puede realizar la selección de los datos que debería cargar el adaptador
de datos. Una forma es escribir 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:

Figura 3.9 Ventana Generador de consultas.

Seleccione la tabla clientes, pulse el botón Agregar y luego el botón Cerrar, se


visualizará la siguiente figura:

76
Figura 3.10 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 3.11 Generador de consultas con los campos seleccionados (tabla clientes).

Pulse el botón Aceptar, y se visualizará la siguiente figura:

77
Figura 3.12 Generador de consultas con la instrucción SQL.

Al pulsar el botón Finalizar, se crearán los objetos: SqlDataAdapter1 y


SqlConnection1. Cambie el nombre de dichos objetos por adaptadordedatos y
conexion respectivamente, para ver la siguiente figura:

Figura 3.13 Formulario con los objetos adaptadordedatos y conexión.

Ahora ejecute la opción Generar Conjunto de Datos del menú Datos y se


mostrará el siguiente cuadro de diálogo:

78
Figura 3.14 Ventana Generar conjunto de datos.

Seleccione la opción Nuevo y cambie el nombre DataSet1 por conjuntodedatos


y pulse el botón Aceptar para agregar el conjunto de datos a la aplicación, como
muestra la figura:

Figura 3.15 Formulario con el objeto conjuntodedatos.

Ahora se deben vincular los campos de texto con los campos de la tabla clientes.
Seleccione el objeto campo1, busque la propiedad DataBindings, expanda el nodo (+),
seleccione la propiedad Text y expanda los nodos formulario instancias de lista,
conjuntodedatos, clientes y seleccione el campo nit, como se aprecia en la figura:

79
Figura 3.16 Vinculación del campo nit al objeto campo1.

Realice el paso anterior para cada objeto TextBox (campo2…campo6)


asignándole un campo respectivamente de la tabla clientes. Al finalizar dé doble clic
sobre el formulario para visualizar el procedimiento formulario_load y allí digite el
siguiente código:

conjuntodedatos.Clear()
adaptadordedatos.Fill(conjuntodedatos)

En el anterior código primero se limpia el conjunto de datos actual utilizando el


metodo clear y luego se llama al método fill (rellenar) del adaptador de datos,
pasandole como argumento el conjunto de datos que se desea visualizar. Al ejecutar la
aplicación se muestra algo similar a la figura 3.17:

Figura 3.17 Visualización del primer registro de la tabla clientes.

Como se puede apreciar, solamente se visualiza el primer registro de la tabla


clientes. Para poder ver cada uno de los registros de la tabla se debe realizar el código
para los botones: Primero, Siguiente, Anterior, Último.

 Escribir código para los botones

a) Seleccione el objeto botonprimero, dé doble clic para abrir el editor de código y

80
escriba el siguiente código:
BindingContext(conjuntodedatos, "clientes").Position = 0

Se utiliza el objeto BindingContext de la clase Form que recibe el


conjunto de datos y el nombre de la tabla. Con la propiedad Position se realiza
el desplazamiento de los registros de la tabla, en este caso, la posicion es igual a
cero (0) lo que indica que el cursor de la tabla estara en el primer registro.

b) Seleccione el objeto botonsiguiente, dé doble clic para abrir el editor de código y


escriba el siguiente código:
BindingContext(conjuntodedatos, "clientes").Position += 1

La propiedad Position se incrementa en uno para desplazarse al siguiente


registro.

c) Seleccione el objeto botonanterior, dé doble clic para abrir el editor de código y


escriba el siguiente código:
BindingContext(conjuntodedatos, "clientes").Position -= 1

La propiedad Position se decrementa en uno para desplazarse al anterior


registro.

d) Seleccione el objeto botonúltimo, dé doble clic para abrir el editor de código y


escriba el siguiente código:
BindingContext(conjuntodedatos, "clientes").Position = _
BindingContext(conjuntodedatos, "clientes").Count - 1

La propiedad Position se hace igual al número de registros – 1. Se utiliza


el método count para contar los registros de la tabla clientes.

Al volver a ejecutar la aplicación, y cuando el usuario pulse cada uno de los


botones se podrá desplazar por cada uno de los registros de la tabla clientes.

Figura 3.18 Desplazamiento por los registros de la tabla clientes.

81
3.1.2 Formulario con una cuadrícula y botones

Diseñar de un proyecto llamado MovregDataGridView, y realizar un programa que


permita visualizar cada registro de la tabla clientes de la base de datos
bdlibrovbnet.mdf de SQL Server en una cuadrícula. El usuario deberá poder
desplazarse por cada registro de la tabla utilizando los botones: Primero, Siguiente,
Anterior y Último.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario en la posición deseada: 4 Button, 1
DataGridView.

Figura 3.19 Interfaz de usuario (MovRegDataGridView).

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


Establezca las siguientes modificaciones a los controles:

Tabla 3.2 Propiedades de controles proyecto MovRegDataGridView.


Nombre del proyecto: MovRegDataGridView
Control Propiedad Valor
DataGridView1 Name tabla
Button1 Name botonprimero
Text Primero
Button2 Name botonsiguiente
Text Siguiente
Button3 Name botonanterior
Text Anterior
Button4 Name botonúltimo
Text Último
Form1 Name formulario
Text Desplazamiento de Registros en un
DataGridView.

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

82
Figura 3.20 Interfaz de usuario modificada (MovRegDataGridView).

 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

El espacio de nombres System.Data.SqlClient es necesario para utilizar


las diferentes clases que permitan las operaciones con la base de datos SQL
Server.

b) Después de la apertura de la clase formulario y antes de los procedimientos sub,


inicialice las siguientes variables u objetos globales:

Private transaccion As New BindingSource


Private adaptador As SqlDataAdapter
Dim conexion As String = "Data Source=(local)\SQLEXPRESS;Database=bdlibrovbnet;
Integrated Security=True"

Se inicializan los siguientes objetos: transacción de tipo BindingSource


para encapsular y manipular el origen de los datos; adaptador de tipo
SqlDataAdapter para intercambiar datos con una base de datos SQL Server;
conexión de tipo String al que se le asignará la cadena de conexión para SQL
Server.

c) Dé doble clic sobre el formulario para abrir el editor de código del


procedimiento formulario_ Load y escriba el siguiente código:

83
tabla.dataSource = transaccion
Dim seleccion As String = "Select * From clientes"
Try
adaptador = New SqlDataAdapter(seleccion, 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

A la propiedad DataSource del objeto tabla se le establece el origen de


datos (transaccion) y se crea una variable llamada seleccion de tipo String a la
cual se le asigna la instrucción de SQL Select. En un bloque try se le asigna
espacio de memoria de tipo SqlDataAdapter al objeto adaptador recibiendo
los datos seleccionados (seleccion) y la cadena de conexión a SQL Server
(conexion), como también se concede espacio de memoria al objeto
tabladedatos de tipo DataTable. Luego se rellena (fill) el adaptador de datos
(adaptador) con la tabla de datos (tabladedatos) y se asigna al objeto
transacción la tabla de datos utilizando la propiedad DataSource. Por otro lado
se refresca (Refresh ()) la cuadrícula para cargar los datos y se obtiene la
posición del primer registro de la cuadrícula
(FirstDisplayedScrollingRowIndex = transaccion.Position). Utilizando dos
bloques catch se atrapan las excepciones SQLException (por si existe algún
error en la ejecución de las sentencias SQL) y Exception (por si existe algún
problema con el sistema).

d) d) Seleccione el objeto botonprimero, de doble clic para abrir el editor de código


y escriba el siguiente código:
transaccion.MoveFirst()

Se utiliza el método MoveFirst() del objeto transaccion para moverse al


primer registro de la tabla.

e) Seleccione el objeto botonsiguiente, dé doble clic para abrir el editor de código y


escriba el siguiente código:
transaccion.MoveNext()

Se utiliza el método MoveNext() del objeto transaccion para moverse al


siguiente registro de la tabla.

f) Seleccione el objeto botonanterior, dé doble clic para abrir el editor de código y


escriba el siguiente código:
transaccion.MovePrevious()

84
Se utiliza el método MovePrevious() del objeto transaccion para
moverse al anterior registro de la tabla.

g) Seleccione el objeto botonúltimo, dé doble clic para abrir el editor de código y


escriba el siguiente código:
transaccion.MoveLast()

Se utiliza el método MoveLast del objeto transaccion para moverse al


último registro de la tabla.

 Ejecutar el proyecto

Al ejecutarse el proyecto, se visualizará el formulario con los datos en el objeto


DataGridView de la tabla clientes de SQL Server y los botones de desplazamiento. El
usuario podrá pulsar cualquier botón y se desplazara por cada registro de la tabla en la
cuadrícula.

Figura 3.21 Formulario con un DataGridView y botones de desplazamiento.

3.1.3 Formulario con una cuadrícula y un control BindingNavigator

Diseñar de un proyecto llamado MovregBindingNavigator y realizar un programa que


permita visualizar cada registro de la tabla clientes de la base de datos
bdlibrovbnet.mdf de SQL Server en una cuadrícula. El usuario deberá poder
desplazarse por cada registro de la tabla utilizando un control BindingNavigator.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario en la posición deseada: 1 BindingNavigator, 1
DataGridView.

85
Figura 3.22 Interfaz de usuario (MovRegBindingNavigator).

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


Establezca las siguientes modificaciones a los controles:

Tabla 3.3 Propiedades de controles proyecto MovRegDataGridView.


Control Propiedad Valor
DataGridView1 Name tabla
BindingNavigator1 Name navegador
Form1 Name formulario
Text Desplazamiento de Registros en un
BindingNavigator.

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

Figura 3.23 Interfaz de usuario modificada (MovRegDataGridView).

86
Ahora seleccione el objeto DataGridView llamado tabla y en la flecha que
aparece en el lado superior derecho, dé clic en el mouse para visualizar las Tareas de
DataGridView:

Figura 3.24 Ventana de las Tareas de DataGridView.

Seleccione la opción Elegir origen de datos, para visualizar la siguiente figura:

Figura 3.25 Ventana Elegir origen de datos.

Al seleccionar Agregar origen de datos del proyecto, se visualizará la


siguiente ventana:

87
Figura 3.26 Asistente para la configuración de orígenes de datos.

Seleccione el objeto Base de datos y pulse el botón Siguiente>, para visualizar


la ventana de elección de la base de datos:

Figura 3.27 Ventana Elegir la conexión de datos.

Dé clic en el botón Nueva Conexión. En la ventana que se visualiza elija como


origen de datos Microsoft SQL Server y la base de datos bdlibrovbnet.

88
Figura 3.28 Ventana Agregar conexión.

Al pulsar el botón Aceptar se visualizará nuevamente la ventana de elección de


conexión de datos con la base de datos bdlibrovbnett.mdf, como se aprecia en la
siguiente figura:

Figura 3.29 Ventana con la base de datos seleccionada.

Pulse Siguiente> para visualizar el siguiente mensaje:

89
Figura 3.30 Ventana Microsoft Visual Studio.

Pulse el botón Sí para copiar el archivo de datos en la carpeta en donde guardó el


proyecto y visualizar la ventana de guardar cadena de conexión:

Figura 3.31 Ventana Guardar cadena de conexión.

Cambie el nombre de la conexión que allí aparece por conexion y pulse el botón
Siguiente>, se visualizará la siguiente figura:

Figura 3.32 Ventana de elección de objetos de la base de datos.

90
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 figura 3.33:

Figura 3.33 DataGridView con los campos de la tabla clientes.

Como se puede apreciar, se crearon tres nuevos objetos: el objeto


conjuntodedatos que contendrá los datos seleccionados; el objeto
ClientesBindingSource que en su propiedad DataSource tiene asignado el objeto
conjuntodedatos y en la propiedad 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.

Seleccione el objeto navegador y en la propiedad BindingSource asigne el


objeto ClientesBindingSource para poder desplazarse por cada uno de los registros que
contiene la cuadrícula.

 Ejecutar el proyecto

Al ejecutarse el proyecto, se visualizará el formulario con los datos de la tabla clientes


de SQL Server en el objeto DataGridView y por medio del control BindingNavigator
podrá desplazarse por cada uno de los registros:

Figura 3.34 Formulario con un DataGridView y un BindingNavigator

91
3.2 Ejercicios de desplazamiento por los registros de una tabla

1. Realizar un programa que permita hacer una conexión a ORACLE y visualizar


los registros de una tabla en campos de texto y desplazarse por ellos.
2. Diseñar un programa que permita realizar una conexión a ORACLE y visualizar
los registros de una tabla en una cuadrícula y desplazarse por ellos.
3. Crear un programa que permita realizar una conexión a ORACLE y visualizar
los registros de una tabla en un ListView y desplazarse por ellos con control
BindingNavigator.
4. Hacer un programa que permita realizar una conexión a ACCESS y visualizar
los registros de una tabla en campos de texto y desplazarse por ellos con un
control BindingNavigator.
5. Elaborar un programa que permita realizar una conexión a ACCESS y visualizar
los registros de una tabla en una cuadrícula y desplazarse por ellos.
6. Realizar un programa que permita hacer una conexión a ACCESS y visualizar
los registros de una tabla en un ListView y desplazarse por ellos.
7. Hacer un programa que permita realizar una conexión a MySQL y visualizar los
registros de una tabla en campos de texto y desplazarse por ellos.
8. Elaborar un programa que permita realizar una conexión a MySQL y visualizar
los registros de una tabla en una cuadrícula y desplazarse por ellos.
9. Diseñar un programa que permita realizar una conexión a MySQL y visualizar
los registros de una tabla en un ListView y desplazarse por ellos con un control
BindingNavigator.
10. Crear un programa que permita realizar una conexión a SQL Server y visualizar
los registros de una tabla en un ListView y desplazarse por ellos.

92
4. OPERACIONES CON TABLAS DE UNA BASE DE DATOS

Cuando se trabaja con bases de datos se pueden realizar operaciones de añadir, eliminar
tablas, vistas, como también insertar, modificar, eliminar o consultar información de
una tabla. Generalmente estas operaciones se realizan ejecutando instrucciones del
lenguaje SQL.

En este aparte se realizarán ejemplos que permitan efectuar dichas operaciones


utilizando algunos de los controles de Visual Basic .NET.

4.1 Ejemplos de operaciones con tablas de una base de datos

4.1.1 Insertar registros en una tabla utilizando campos de texto

Desde un proyecto llamado InsertarRegCampoTexto, hacer un programa que permita


insertar datos en la tabla clientes de la base de datos bdlibrovbnet.mdf de SQL
Server. Los datos a insertar de deben capturar en campos de texto (TextBox).

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario en la posición deseada: 1 Button, 7 Label y 6
TextBox.

Figura 4.1 Interfaz de usuario (InsertarRegcampoTexto).

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


Establezca las siguientes modificaciones a los controles:

93
Tabla 4.1 Propiedades de controles proyecto InsertarRegCampoTexto.
Control Propiedad Valor
Label1 Name texto
Text Insertar Registros en la tabla
clientes.
Font true
Label2 Name tnit
Text Digite Nit:
Label3 Name tempresa
Text Nombre empresa:
Label4 Name trepresentante
Text Representante:
Label5 Name tdireccion
Text Dirección:
Label6 Name ttelefono
Text Teléfono:
Label7 Name tciudad
Text Ciudad
Textobox1…Textbox6 Name campo1….campo6
Text blanco
Button1 Name botoninsertar
Text Insertar Registro
Form1 Name formulario
Text Insertar registros en una tabla.

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

Figura 4.2 Interfaz de usuario modificada (InsertarRegCampoTexto).

 Escribir código

a) Antes de la apertura de la clase formulario se debe importar el siguiente espacio


de nombres:

94
Imports System.Data.SqlClient
Public Class Form1
….
……
End Class

b) Seleccione el objeto botoninsertar, dé doble clic para abrir el editor de código y


escriba el siguiente código:
Dim conexion As String
conexion = "Data Source=(local)\SQLEXPRESS;Database=bdlibrovbnet;Integrated
Security=True"
Dim tnit As String = campo1.Text
Dim tempresa As String = campo2.Text
Dim trepresentante As String = campo3.Text
Dim tdireccion As String = campo4.Text
Dim ttelefono As String = campo5.Text
Dim tciudad As String = campo6.Text
Dim seleccion As String = "INSERT INTO clientes(nit, empresa, representante,
direccion,telefono,ciudad)VALUES('" + tnit + "' ,'" + tempresa +
"','" + trepresentante + "','" + tdireccion + "','" + ttelefono + "','" +
tciudad + "')"
Dim adaptadordedatos As SqlDataAdapter
Dim tabladedatos As New DataTable
Try
adaptadordedatos = New SqlDataAdapter(seleccion, conexion)
adaptadordedatos.Fill(tabladedatos)
MsgBox("Registro insertado", MsgBoxStyle.Information)
Catch ex As Exception
MsgBox("Error: " & ex.Message, MsgBoxStyle.AbortRetryIgnore)
End Try

Se crean las variables tnit, tempresa, trepresentante, tdireccion,


ttelefono, tciudad de tipo String que almacenarán los valores de cada campo de
texto (campo1… campo6), también se crea una variable seleccion de tipo String
que almacenará la instrucción SQL insert into. En dicha instrucción primero se
selecciona la tabla donde se va a insertar el nuevo registro, seguido del nombre
de los campos de dicha tabla y con la propiedad values se le asignan los
respectivos valores a cada campo. Se crean los objetos adaptadordedatos de
tipo SqlDataAdapter, el cual será el adaptador de datos para la base de datos a
manipular; tabladedatos se le asigna espacio de memoria de tipo DataTable
para guardar los datos en memoria y poder realizar operaciones con dichos
datos. En un bloque Try se le asigna espacio de memoria de tipo
SqlDataAdapter al objeto adaptadordedatos, al cual se le 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 por último se muestra el mensaje “Registro Insertado”. Por el
bloque Catch se establece un mensaje en caso de que ocurra un error.

95
 Ejecutar el proyecto
Al ejecutarse el proyecto, se debe digitar la información solicitada en cada campo de
texto y pulsar el botón Insertar Registro, se insertará el registro en la tabla clientes y
se visualizará el mensaje de “Registro Insertado”. Si desea puede ejecutar alguno de
los programas que permiten consultar una base de datos SQL Server para verificar que
el registro efectivamente se ha guardado en la tabla.

Figura 4.3 Formulario con datos en los campos de texto (InsertarRegCampoTexto).

Figura 4.4 Mensaje cuando es insertado el registro (InsertarRegCampoTexto).

4.1.2 Insertar registros en una tabla utilizando un DataGridView

Crear un proyecto llamado InsertarRegDataGridView y realizar un programa que


permita insertar datos en la tabla clientes de la base de datos bdlibrovbnet.mdf de SQL
Server. Los datos se deben visualizar y adicionar utilizando un control DataGridView.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario en la posición deseada: 3 Button, 1
DataGridView.

96
Figura 4.5 Interfaz de usuario (InsertarRegDataGridView).

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


Establezca las siguientes modificaciones a los controles:

Tabla 4.2 Propiedades de controles proyecto InsertarRegDataGridView.

Nombre del proyecto: InsertarRegDataGridView


Control Propiedad Valor
Button1 Name botoncargar
Text Cargar datos
Button2 Name botonnuevo
Text Agregar registro
Button3 Name botonguardar
Text Guardar registro
DataGridView1 Name tabla
Form1 Name formulario
Text Insertar registros en DataGridView.

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

Figura 4.6 Interfaz de usuario modificada (InsertarRegDataGridView).

97
 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

El espacio de nombres System.Data.SqlClient es necesario para utilizar


las diferentes clases que permitan también las operaciones con la base de datos
SQL Server.

b) Después de la apertura de la clase formulario y antes de los procedimientos


Sub, inicialice las siguientes variables u objetos globales:

imports System.Data.SqlClient
Public class formulario
Private transaccion As New BindingSource
Private adaptador As SqlDataAdapter
Dim conexion As String = "Data Source=(local)\SQLEXPRESS;Database=
bdlibrovbnet; Integrated Security=True"
…….
…….
End Class

Se inicializan los siguientes objetos: transaccion de tipo BindingSource


para encapsular y manipular el origen de los datos; adaptador de tipo
SqlDataAdapter para intercambiar datos con una base de datos SQL Server;
conexion de tipo String al que se le asignará la cadena de conexión para SQL
Server.

c) Dé doble clic sobre el formulario para abrir el editor de código y cree un nuevo
procedimiento llamado cargar_datos:
Public Sub cargar_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

98
El procedimiento cargar_datos recibe como parámetros una variable de
tipo String llamada sentenciassql y un objeto tabla de tipo DataGridView. En
un bloque Try se le asigna espacio de memoria al objeto adaptador de tipo
SqlDataAdapter, el cual recibe la sentencia SQL y la cadena de conexión. Por
otro lado, se crea un objeto tabladedatos al cual se le asigna espacio de
memoria DataTable (). Se rellena el adaptador de datos (adaptador) con la
tabla de datos (tabladedatos) y a la propiedad DataSource del objeto
transaccion se le asigna la tabla de datos. Por otro lado, se refresca (Refresh ())
la cuadrícula para cargar los datos y se obtiene la posición del primer registro de
la cuadrícula (FirstDisplayedScrollingRowIndex = transaccion.Position).
Utilizando dos bloques catch se atrapan las excepciones SQLException (por si
existe algún error en la ejecución de las sentencias SQL) y Exception (por si
existe algún problema con el sistema).

d) Seleccione el objeto botoncargar, dé doble clic para abrir el editor de código y


escriba el siguiente código:
tabla.DataSource = transaccion
cargar_datos("select * from clientes", tabla)

A la propiedad DataSource del objeto tabla se le establece el origen de


datos (transaccion) y se llama al procedimiento cargar_datos enviándole la
sentencia SQL “Select * from clientes” y el objeto tabla.

e) Seleccione el objeto botonnuevo, dé doble clic para abrir el editor de código y


escriba el siguiente código:
transaccion.AddNew()

Se utiliza el método AddNew del objeto transaccion para crear un nueva


fila en el objeto tabla.

f) Seleccione el objeto botonguardar, dé doble clic para abrir el editor de código y


escriba el siguiente código:
If Not transaccion.DataSource Is Nothing Then
Adaptador.Update(CType(transaccion.DataSource, DataTable))
cargar_datos("Select * From clientes", tabla)
Else
MsgBox("No se pudo guardar el registro", MsgBoxStyle.Critical)
End If

Si la fila del objeto tabla 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 cargar_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”.

99
 Ejecutar el proyecto

Al ejecutarse el proyecto y pulsar el botón Cargar Datos, se visualizarán los registros


de la tabla clientes, como se aprecia en la siguiente figura:

Figura 4.7 Formulario con los registros de la tabla clientes.

Al pulsar el botón Agregar Registro, se seleccionará en una nueva fila el primer


campo del objeto tabla, el formulario queda de la siguiente forma:

Figura 4.8 Cuadrícula con una nueva fila para insertar datos.

Si se captura la información en cada campo de la cuadrícula y luego se pulsa el


botón Guardar Registro, se insertarán los datos en la tabla clientes. En la siguiente
figura se aprecia el registro insertado:

100
Figura 4.9 Cuadrícula con un nuevo registro insertado en la tabla clientes.

4.1.3 Buscar registros por un campo específico

Dentro de un proyecto llamado ConsultaPorCampo, diseñar un programa que permita


buscar una ciudad específica en la tabla clientes y visualizar todos los registros que
cumplan la condición en un control DataGridView.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario en la posición deseada: 1 Label, 1 TextBox, 1
Button, 1 DataGridView.

Figura 4.10 Interfaz de usuario (ConsultaPorCampo).

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


Establezca las siguientes modificaciones a los controles:

101
Tabla 4.3 Propiedades de controles proyecto ConsultaPorCampo.
Control Propiedad Valor
Label1 Name titulo
Text Ciudad a Buscar:
TextBox1 Name campobusqueda
Text blanco
Button1 Name botonbuscar
Text Buscar
DataGridView1 Name tabla
Form1 Name formulario
Text Consultar tabla por campo.

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

Figura 4.11 Interfaz de usuario modificada (ConsultaPorCampo).

 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

b) Seleccione el objeto botonbuscar, dé doble clic para abrir el editor de código y


escriba el siguiente código:

Dim conexion As String


conexion = "Data Source=(local)\SQLEXPRESS;Database=bdlibrovbnet;Integrated
Security=True"
Dim clave = campobusqueda.Text
Dim seleccion As String = "SELECT * FROM clientes where ciudad='" + clave + "'"
Dim adaptador As SqlDataAdapter
Dim tabladedatos As New DataTable
Try

102
adaptador = New SqlDataAdapter(seleccion, conexion)
adaptador.Fill(tabladedatos)
tabla.DataSource = tabladedatos
If Not (tabla.Rows.Count - 1 > 0) Then
MsgBox("Ciudad no existe en la tabla Clientes...", MsgBoxStyle.Information,
"Consulta por ciudad")
End If
Catch ex As Exception
MsgBox("Error: " & ex.Message)
End Try

Se crea una variable clave que almacenará el nombre de la ciudad que


será escrita en el objeto campobusqueda, 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 sólo aquellos registros
cuya ciudad sea igual al nombre de la ciudad escrita en el objeto
campobusqueda. 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. Se utiliza la estructura if para determinar si en el objeto tabla no
se visualizaron registros, es decir, no se encontró la ciudad buscada, por lo cual
se muestra el mensaje “Ciudad no existe en la tabla Clientes”.

 Ejecutar el proyecto

Al ejecutarse el proyecto en el entorno de desarrollo, se visualizará la figura 4.11. Si en


el campo de texto se escribe “cali”, al pulsar el botón Buscar, se mostrará en la
cuadrícula todos aquellos registros cuya ciudad sea igual a cali, como se muestra en la
siguiente figura:

Figura 4.12 Formulario con los registros cuya ciudad es igual a Cali.

103
4.1.4 Buscar registros por cualquier campo de una tabla

Dentro de un proyecto llamado ConsultaCualquierCampo hacer un programa que


permita realizar una búsqueda de información en la tabla clientes por cualquier campo
de dicha tabla y visualizar todos los registros que cumplan la condición en un control
DataGridView.

 Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control específico y ubique los


siguientes controles en el formulario en la posición deseada: 4 Label, 1 TextBox, 1
Button, 1 DataGridView y 2 ComboBox.

Figura 4.13 Interfaz de usuario (ConsultaCualquierCampo).

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


Establezca las siguientes modificaciones a los controles:

Tabla 4.4 Propiedades de controles proyecto ConsultaCualquierCampo.

Control Propiedad Valor


Label1 Text Búsqueda de registros
por cualquier campo de
una tabla.
name titulo
Font /Bold true
Label2 Text Campo
name txtcampo
Label3 Text Operador
name txtoperador
Label4 Text Criterio
name txtcriterio
TextBox1 name valorcampo

104
Button1 name boton
Text Consultar
ComboBox1 name listacampos
ComboBox2 name listaoperadores
DataGridView1 Name tabla
Form1 Name formulario
Text Búsqueda de registros
en una tabla.

Figura 4.14 Interfaz de usuario modificada (ConsultaCualquierCampo).

 Escribir código
a) Seleccione el control listacampos, busque la propiedad Items, dé clic en los tres
puntos al lado de Colección y en la ventana Editor de la colección Cadena,
escriba por cada línea un campo de la tabla clientes y pulse el botón Aceptar.
Otra forma es dar clic sobre la flecha del control en la parte superior derecha y
seleccionar la opción Editar elementos. La ventana de edición deberá quedar
como se muestra en la figura:

Figura 4.15 Ventana Editor del objeto listacampos.

105
b) Seleccione el control listaoperadores, busque la propiedad Items, dé clic en los
tres puntos al lado de Colección y en la ventana Editor de la colección Cadena,
escriba por cada línea los operadores: <, >=, <, >=, =, <>, luego pulse el botón
Aceptar. La ventana de edición deberá quedar como se muestra en la figura:

Figura 4.16 Ventana Editor del objeto listaoperadores.

c) Antes de la apertura de la clase formulario se debe importar el siguiente espacio


de nombres:
Imports System.Data.SqlClient
Public Class formulario
……
End Class

d) Seleccione el objeto boton, dé doble clic para abrir el editor de código y escriba
el siguiente código:

Dim conexion As String


conexion = "Data Source=(local)\SQLEXPRESS;Database=bdlibrovbnet;Integrated
Security=True"
Dim clave = valorcampo.Text
Dim nombre_campo As String = listacampos.SelectedItem.ToString
Dim valoroperador As String = listaoperadores.SelectedItem.ToString
Dim seleccion As String = "SELECT * FROM clientes where " + nombre_campo + " " +
valoroperador + "'" + clave + "'"
Dim adaptador As SqlDataAdapter
Dim tabladedatos As New DataTable
Try
adaptador = New SqlDataAdapter(seleccion, conexion)
adaptador.Fill(tabladedatos)
tabla.DataSource = tabladedatos
Catch ex As Exception
MsgBox("Error: " & ex.Message)
End Try

Se crean las variables: clave que almacenará el valor que esté escrito en
el objeto valorcampo; nombre_campo de tipo String que almacenará el

106
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 4.14. Si se


selecciona del objeto listacampos el campo “nit”, del objeto listaoperadores el
operador “>”, se escribe en el objeto valorcampo “300” y se pulsa el botón Consultar,
se visualizará en la cuadrícula todos aquellos registros cuyo nit sea mayor que 300,
como se muestra en la siguiente figura:

Figura 4.17 Formulario con los registros cuyo nit es mayor que 300.

4.1.5 Buscar registros mientras se escribe

Desde un proyecto llamado ConsultaMientrasSeEscribe, diseñar un programa que


permita realizar una búsqueda de información en la tabla clientes mientras se escribe en
un campo de texto. Se debe ir mostrando en un control ListBox la (s) empresa(s) que
cumplan la condición unido al campo representante.

 Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control específico y ubique los


siguientes controles en el formulario en la posición deseada: 2 Label, 1 TextBox, 1
ListBox, 1 DataGridView.

107
Figura 4.18 Interfaz de usuario (ConsultaMientrasSeEscribe).

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


Establezca las siguientes modificaciones a los controles:

Tabla 4.5 Propiedades de controles proyecto ConsultaCualquierCampo.

Control Propiedad Valor


Label1 Text Consulta de registros
mientras se escribe.
name titulo
Font /bold true
Label2 Text Empresa a Buscar:
name txtbusqueda
Textbox1 name campobusqueda
ListBox1 Name listaempresas
DataGridView1 Name Tabla
Form1 Name formulario
Text Consulta de Registros.

Figura 4.19 Interfaz de usuario modificada (ConsultaMientrasSeEscribe).

108
 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

b) Después de la apertura de la clase formulario y antes de los procedimientos


Sub, inicialice las siguientes variables u objetos globales:
Public class formulario
Dim tabladedatos As New DataTable
…….
End Class

Se inicializa un objeto global llamado tabladedatos al que se le asigna


espacio de memoria de tipo DataTable para manipular los datos a seleccionar.

c) Dé doble clic sobre el formulario para abrir el editor de código del


procedimiento formulario_ Load y escriba el siguiente código:

Dim conexion As String = "Data Source=(local)\SQLEXPRESS;Database=bdlibrovbnet;


Integrated Security=True"
Dim seleccion As String = "SELECT empresa,representante FROM clientes"
Dim adaptador As SqlDataAdapter
adaptador = New SqlDataAdapter(seleccion, conexion)
tabladedatos = New DataTable
Try
adaptador.Fill(tabladedatos)
tabla.DataSource = tabladedatos
Catch ex As Exception
MsgBox("Error: " & ex.Message)
End Try

A la variable seleccion de tipo String se le asigna la sentencia SQL


Select. En dicha instrucción se selecciona los campos empresa y representante
de la tabla clientes (Select empresa, representante from clientes). Al
ejecutarse el formulario se realiza la conexión a la base de datos
bdlibrovbnet.mdf de SQL Server y se visualiza en el objeto tabla los datos de
los campos empresa y representante de la tabla clientes.

d) Dé doble clic sobre el objeto campobusqueda para abrir el editor de código del
procedimiento campobusqueda_TextChanged y escriba el siguiente código:

Dim filas() As DataRow


Dim texto As String = campobusqueda.Text
Dim empresaencontrada As String = "Select empresa from clientes where empresa like'"
& campobusqueda.Text & "%'"
filas = tabladedatos.Select("empresa LIKE '" & campobusqueda.Text & "%'")
listaempresas.Items.Clear()
If filas.Length > 0 Then
For Each filascondatos As DataRow In filas

109
listaempresas.Items.Add(filascondatos("Empresa").ToString & ", " &
filascondatos("Representante").ToString)
Next
End If

Se crean las variables: un arreglo llamado filas () de tipo DataRow (fila


de datos) que almacenará los datos coincidentes por la búsqueda realizada; una
variable llamada texto de tipo String a la cual se le asigna el contenido del
objeto campobusqueda en su propiedad Text; otra variable llamada
empresaencontrada de tipo String a la cual se le asigna la sentencia SQL
Select. En dicha instrucción se selecciona el campo empresa de la tabla clientes
(Select empresa from clientes), y se utiliza la cláusula where para seleccionar
aquellos registros cuyo campo empresa comiencen (like) con el texto del objeto
campobusqueda sin importar el resto de caracteres del campo empresa (%). Al
arreglo filas () se le asigna la colección resultante de los registros que cumplan
la condición de la propiedad Select (empresa like “????%”) del objeto
tabladedatos. Por otro lado, se borran todos elementos (Items) anteriores del
objeto listaempresas utilizando la función clear (). Con la instrucción
condicional if, se pregunta si el arreglo filas tiene una longitud (Length) mayor
que cero para crear un ciclo que permita adicionar los campos empresa y
representante de la tabla clientes en el objeto listaempresas utilizando la
función Add de la propiedad Items.

 Ejecutar el proyecto

Al ejecutarse el proyecto, se visualizará la figura 4.19. Si se escribe en el objeto


campobusqueda el carácter “c”, se visualizará en el objeto listaempresas todos los
registros en donde el nombre de la empresa empiecen por la letra c, como se muestra en
la figura:

Figura 4.20 Formulario con nombres de empresas que comienzan con “c”.

Ahora si se escribe en el campo de texto la sílaba “ca”, se borrarán los elementos


actuales del objeto listaempresas y se visualizarán los registros cuyo nombre de
empresa empiezan por “ca”.

110
Figura 4.21 Formulario con nombres de empresas que comienzan con “ca”.

4.1.6 Ejecutar instrucciones SQL sobre una base de datos

Dentro de un proyecto llamado ConsultarConInstruccionesSQL, crear un programa


que permita escribir sentencias SQL en un campo de texto y visualizar los resultados de
dicha sentencia en una cuadrícula.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario en la posición deseada: 2 Label, 1 TextBox, 1
Button, 1 DataGridView.

Figura 4.22 Interfaz de usuario (ConsultarConInstruccionesSQL).

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


Establezca las siguientes modificaciones a los controles:

111
Tabla 4.6 Propiedades de controles proyecto ConsultarConInstruccionesSQL.

Control Propiedad Valor


Label1 Text Consultar una base de
datos utilizando
instrucciones SQL.
name titulo
Font /bold True
Label2 Text Digite Código SQL:
name texto
TextBox1 name textosql
Multiline true
Button1 name boton
Text Ejecutar
DataGridView1 Name tabla
Form1 Name formulario
Text Consultar con SQL.

Figura 4.23 Interfaz de usuario modificada (ConsultarConInstruccionesSQL).

 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

b) Dé doble clic sobre el objeto boton para abrir el editor de código y escriba el
siguiente código:

Dim conexion As String


conexion = "Data Source=(local)\SQLEXPRESS;Database=bdlibrovbnet;

112
Integrated Security=True"
Dim seleccion As String = textosql.Text
Dim adaptador As SqlDataAdapter
Dim tabladedatos As New DataTable
Try
adaptador = New SqlDataAdapter(seleccion, conexion)
adaptador.Fill(tabladedatos)
tabla.DataSource = tabladedatos
Catch ex As Exception
MsgBox("Error: " & ex.Message)
End Try

Se crea una variable seleccion de tipo String que almacenará la sentencia


SQL que será digitada en el campo de texto textosql. 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, se visualizará la figura 4.23. Si se escribe la sentencia SQL en


el objeto textosql “Select nit, empresa, representante from clientes where nit>300”,
se visualizará en el objeto tablas todos los registros donde el nit sea mayor que 300,
como se muestra en la figura:

Figura 4.24 Formulario con el campo nit mayor que 300.

4.1.7 Eliminar registros de una tabla

Realizar un proyecto llamado EliminarRegistrosTabla, que permita a un usuario


eliminar registros de la tabla clientes de la base de datos bdlibrovbnet.mdf y visualizar
los demás registros de la tabla en una cuadrícula.

113
 Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control específico y ubique los


siguientes controles en el formulario en la posición deseada: 3 Label, 1 TextBox, 1
Button, 1 DataGridView.

Figura 4.25. Interfaz de usuario (EliminarRegistrosTabla).

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


Establezca las siguientes modificaciones a los controles:

Tabla 4.7 Propiedades de controles proyecto EliminarRegistrosTabla.

Control Propiedad Valor


Label1 Text Eliminar registros de la
tabla clientes.
name titulo
Font /bold true
Label2 Text Nit a Eliminar:
name etiquetaeliminar
Label3 Text Consultar Tabla
name etiquetaconsulta
TextBox1 name textoeliminar
Button1 name boton
Text Eliminar Registros
DataGridView1 Name Tabla
Form1 Name formulario
Text Eliminar registros de
una tabla.

114
Figura 4.26 Interfaz de usuario modificada (EliminarRegistrosTabla).

 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

b) Dé doble clic sobre el objeto boton para abrir el editor de código y escriba el
siguiente código:

Dim conexion As String


conexion = "Data Source=(local)\SQLEXPRESS;Database=bdlibrovbnet;
Integrated Security=True"
Dim clave = textoeliminar.Text
Dim seleccion As String = "DELETE FROM clientes where nit='" + clave + "'"
Dim adaptador As SqlDataAdapter
Dim tabladedatos As New DataTable
Try
Dim respuesta = MsgBox("Esta Seguro de Eliminar los registros con Nit =" & clave,
MsgBoxStyle.YesNo, "Eliminar registros")
If (respuesta = MsgBoxResult.Yes) Then
adaptador = New SqlDataAdapter(seleccion, conexion)
adaptador.Fill(tabladedatos)
seleccion = "select * FROM clientes"
adaptador = New SqlDataAdapter(seleccion, conexion)
adaptador.Fill(tabladedatos)
tabla.DataSource = tabladedatos
Else
MsgBox("Registros NO eliminados", MsgBoxStyle.Information, "Eliminar Registros")
End If
Catch ex As Exception
MsgBox("Error: " & ex.Message)
End Try

115
Se crean las variables: clave que almacenará el valor que esté escrito en
el objeto textoeliminar; seleccion de tipo String almacenará la instrucción SQL
Delete. En dicha instrucción se eliminarán todos los registros de la tabla clientes
(Delete from clientes) cuyo (where) campo nit sea igual al contenido del objeto
clave. Si el valor de la variable respuesta es igual a Sí, se ejecutará la acción de
eliminación y se visualizará en el objeto tabla los registros restantes de la tabla
clientes.

 Ejecutar el proyecto

Al ejecutarse el proyecto, se visualizará la figura 4.26. Si se escribe en el objeto


textoeliminar el valor de “900” y se pulsa el botón Eliminar, se visualizará una caja
de mensajes con el mensaje “Esta Seguro de eliminar los registros con Nit=900”. Si
el usuario pulsa el botón Sí se visualizará la figura 4.28., en caso contrario se mostrará
el mensaje “Registros No eliminados”.

Figura 4.27 Formulario para eliminar registros.

Figura 4.28 Formulario con el registro eliminado.

116
4.1.8 Actualizar registros de una tabla

Realizar un proyecto llamado ActualizarRegistrosTabla, que permita a un usuario


cambiar todas las ciudades cuyo nombre sea Barranquilla por Cartagena de la tabla
clientes de la base de datos bdlibrovbnet.mdf y visualizar los registros de la tabla en
una cuadrícula.

 Crear la interfaz de usuario.


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario en la posición deseada: 2 Label, 1 TextBox, 1
Button, 1 DataGridView.

Figura 4.29 Interfaz de usuario (ActualizarRegistrosTabla).

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


Establezca las siguientes modificaciones a los controles:

Tabla 4.8 Propiedades de controles proyecto ActualizarRegistrosTabla.

Control Propiedad Valor


Label1 Text Actualización del
campo CIUDAD de la
tabla clientes.
name titulo
Font /bold true
Label2 Text Nueva Ciudad:
name etiquetaciudad
TextBox1 name textociudad
Button1 name boton
Text Actualizar Ciudad
DataGridView1 Name tabla
Form1 Name formulario
Text Actualizar un campo de
una tabla.

117
Figura 4.30 Interfaz de usuario modificada (ActualizarRegistrosTabla).

 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

b) Dé doble clic sobre el objeto boton para abrir el editor de código y escriba el
siguiente código:

Dim conexion As String


conexion = "Data Source=(local)\SQLEXPRESS;Database=bdlibrovbnet;
Integrated Security=True"
Dim clave = textociudad.Text
Dim seleccion As String = "UpDate clientes set ciudad = '" + clave + "'" + " where
ciudad='" + "Barranquilla" + "'"
Dim adaptador As SqlDataAdapter
Dim tabladedatos As New DataTable
Try
Dim respuesta = MsgBox("Esta Seguro de Actualizar los registros",
MsgBoxStyle.YesNo, "Actualizar registros")
If (respuesta = MsgBoxResult.Yes) Then
adaptador = New SqlDataAdapter(seleccion, conexion)
adaptador.Fill(tabladedatos)
Else
MsgBox("Registros NO Actualizados", MsgBoxStyle.Information, "Actualizar
Registros")
End If
seleccion = "select * FROM clientes"
adaptador = New SqlDataAdapter(seleccion, conexion)
adaptador.Fill(tabladedatos)
tabla.DataSource = tabladedatos
Catch ex As Exception
MsgBox("Error: " & ex.Message)
End Try

118
Se crean las variables: clave que almacenará el valor que esté escrito en
el objeto textociudad; seleccion de tipo String que almacenará la instrucción
SQL Update. En dicha instrucción se actualizarán todos los registros de la tabla
clientes (Update clientes set ciudad) en el campo ciudad igual al contenido del
objeto clave para aquellas ciudades cuyo nombre sea igual a “Barranquilla”. Si
el valor de la variable respuesta es igual a Sí, se ejecutará la acción de
actualización y se visualizará en el objeto tabla los registros de la tabla clientes.

 Ejecutar el proyecto
Al ejecutarse el proyecto, se visualizará la figura 4.30. Si se escribe en el objeto
textociudad el valor de “Cartagena” y se pulsa el botón Actualizar Ciudad, se
visualizará una caja de mensajes con el mensaje “Esta Seguro de Actualizar los
registros”. Si el usuario pulsa el botón Sí se visualizará la figura 4.32, en caso contrario
se mostrará el mensaje “Registros No Actualizados”.

Figura 4.31 Formulario para actualizar el campo ciudad.

Figura 4.32 Formulario con la ciudad actualizada.

119
4.1.9 Generar un reporte de los registros de una tabla

Crear un proyecto llamado InformeDatosTabla, que permita a un usuario visualizar en


un formulario un reporte de todos los registros de la tabla clientes de la base de datos
bdlibrovbnet.mdf.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario en la posición deseada: 1
MicrosoftReportViewer.

Figura 4.33. Interfaz de usuario (InformeDatosTabla)

Para acoplar el control MicrosoftReportViewer1 al formulario, pulse la flecha


del lado superior derecha del objeto para ver la ventana Tareas de ReportViewer.

Figura 4.34 Interfaz de usuario (InformeDatosTabla).

120
Seleccione la opción “Acoplar en contenedor principal”, se visualizará el
formulario con el control acoplado como se aprecia en la siguiente figura:

Figura 4.35 Control MicrosoftReportViewer acoplado al formulario.

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


Establezca las siguientes modificaciones a los controles:

Tabla 4.9 Propiedades de controles proyecto InformeDatosTabla.

Control Propiedad Valor


MicrosoftReportViewer1 Name reporte
Form1 Name formulario
Text Reporte de una tabla.

Figura 4.36 Interfaz de usuario modificada (InformeDatosTabla).

121
 Diseñar el informe

Para diseñar el informe, pulse la flecha del lado superior derecho del objeto reporte
para ver la ventana Tareas de ReportViewer y escoja la opción Diseñar nuevo
informe.

Figura 4.37 Seleccionar Diseñar nuevo informe.

Al seleccionar Diseñar nuevo informe, se visualizará la siguiente figura:

Figura 4.38 Asistente para informes.

122
Dé clic en Siguiente> para ver la ventana del Asistente para la configuración
de orígenes de datos.

Figura 4.39 Asistente para la configuración de orígenes de datos.

Seleccione el objeto Base de datos y pulse el botón Siguiente>, para visualizar


la ventana de elección de la base de datos:

Figura 4.40 Ventana Elegir la conexión de datos.

123
Dé clic en el botón Nueva Conexión. En la ventana que se visualiza elija como
origen de datos Microsoft SQL Server y la base de datos bdlibrovbnet.

Figura 4.41 Ventana Agregar conexión.

Al pulsar el botón Aceptar se visualizará nuevamente la ventana de elección de


conexión de datos con la base de datos bdlibrovbnett.mdf, como se aprecia en la
siguiente figura:

Figura 4.42 Ventana con la base de datos seleccionada.

Pulse Siguiente> para visualizar el siguiente mensaje:

124
Figura 4.43 Ventana Microsoft Visual Studio.

Pulse el botón Sí para copiar el archivo de datos en la carpeta en donde guardó el


proyecto y visualizará la ventana de guardar cadena de conexión:

Figura 4.44 Ventana Guardar cadena de conexión.

Cambie el nombre de la conexión que allí aparece por conexion y pulse el botón
Siguiente>, se visualizará la siguiente figura:

Figura 4.45 Ventana de elección de objetos de la base de datos.

125
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 figura:

Figura 4.46 Asistente para informes – seleccionar el origen de datos.

Pulse los signos (+) para desplegar la tabla. Dé clic en Siguiente> para
visualizar la ventana de selección de tipo de informe.

Figura 4.47 Asistente para informes – seleccionar el tipo de informe.

126
Seleccione la opción Tabular o Matriz y dé clic en Siguiente> para visualizar
la ventana de diseño de tabla.

Figura 4.48 Asistente para informes – diseñar la tabla.

Seleccione cada campo y pulse el botón Detalles>. Se obtendrá la siguiente


figura:

Figura 4.49 Diseño de la tabla con los campos seleccionados.

127
Dé clic en Siguiente> para visualizar la ventana de elección de diseño de la
tabla.

Figura 4.50 Asistente para informes – elegir el diseño de la tabla.

Seleccione la opción Escalonado o Bloquear y dé clic en Siguiente> para


visualizar la ventana de estilo de la tabla.

Figura 4.51 Asistente para informes – elegir el estilo de tabla.

128
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.

Figura 4.52 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.

Figura 4.53 Diseño final del informe.

129
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.

Figura 4.54 Seleccionar opción Elegir informe.

Allí escoja InformeDatosTabla.Informe Cliente.rdlc, para visualizar el


formulario con los objetos conjuntodedatos, clientesBindingSource y
clientesTableAdapter.

Figura 4.55 Formulario con los objetos de manejo de datos.

130
 Ejecutar el proyecto
Al ejecutarse el proyecto, se visualizará la figura 4.56. Por medio de la barra de
herramientas se podrá desplazar hacia las diferentes hojas del reporte, así como
imprimir el reporte, modificar el diseño del informe, configurar la página, cambiar el
tamaño de visualización del informe y buscar texto dentro del informe.

Figura 4.56 Formulario con el reporte de los registros de la tabla clientes.

4.2 Ejercicios de operaciones con tablas de una base de datos

1. Realizar un programa que permita hacer una conexión a ORACLE y visualizar


los registros cuyo nit sea menor o igual a 500 en un ListView.
2. Diseñar un programa que permita eliminar los registros cuyo nombre de empresa
contengan la letra “e”.

131
3. Hacer un programa que permita realizar una conexión a SQL Server y aumentar
en 10 días la fecha de entrega de la tabla pedidos.
4. Crear un programa que permita realizar una conexión a una base de datos e
insertar datos. Sólo se deben ingresar datos a la tabla si el nit es mayor que 5000.
5. Realizar un programa que permita conectarse a una base de datos e imprimir en
un formulario un reporte de todos los registros cuya ciudad empiece por B.
6. Crear un programa que permita desplazarse por los registros de una tabla cuya
condición es que la ciudad tenga en su segundo carácter la letra A.
7. Realizar un programa que visualice en un formulario los registros de una tabla
cuyo nit sea mayor que 200 y menor que 900.
8. Hacer un programa que permita a un usuario agregar un nuevo campo a una
tabla.
9. Diseñar un programa que permita visualizar los registros que se van a eliminar
de una tabla en una cuadrícula.
10. Crear un programa que permita visualizar los registros de una tabla en una
cuadrícula. Cada vez que el usuario seleccione un registro se deberán mostrar en
campos de texto los datos de los respectivos campos.

5. MANEJO DE RELACIONES ENTRE TABLAS EN UNA BASE DE DATOS

Generalmente una base de datos contiene muchas tablas, algunas de las cuales tienen
campos en común. Dichas tablas se pueden relacionar por el campo común para
manipular la información de los registros de dos o más tablas. Con la relación de tablas
también se puede realizar el desplazamiento y la operación de los registros de dichas
tablas. Como se ha podido observar, en los capítulos anteriores se ha realizado la
conexión a las bases de datos SQL Server, Access y Oracle, como también se han
realizado diferentes ejemplos con SQL Server. En los siguientes ejemplos se seguirá
trabajando con SQL Server y la base de datos bdlibrovbnet.mdf, la cual contiene las
tablas clientes, pedidos, productos, ventas. (Se puede consultar el Anexo C, para ver
la estructura de las tablas y su información).

5.1 Ejemplos de relación de tablas de una base de datos

5.1.1 Visualizar registros de tablas relacionadas

Crear un proyecto llamado RelacionarDosTablas, que permita a un usuario visualizar


los campos nit, empresa, de la tabla clientes y nropedido, fechaentrega y
observación de la tabla pedidos de la base de datos bdlibrovbnet.mdf en una
cuadrícula.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario en la posición deseada: 1 Label, 1 Button, 1

132
DataGridView.

Figura 5.1 Interfaz de usuario (RelacionarDosTablas).

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


Establezca las siguientes modificaciones a los controles:

Tabla 5.1 Propiedades de controles proyecto RelacionarDosTablas

Control Propiedad Valor


Label1 Text Relación de las tablas
clientes y pedidos de
bdlibrovbnet.mdf.
name titulo
Font /bold true
Button1 Text Ejecutar
name boton
DataGridView1 Name tabla
Form1 Name formulario
Text Relación de tablas de
una base de datos.

Figura 5.2 Interfaz de usuario modificada (RelacionarDosTablas).

133
 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

b) Dé doble clic sobre el objeto boton para abrir el editor de código y escriba el
siguiente código:

Dim conexion As String


conexion = "Data Source=(local)\SQLEXPRESS;Database=bdlibrovbnet;
Integrated Security=True"
Dim seleccion As String = "SELECT clientes.nit,clientes.empresa,pedidos.nropedido,
pedidos.fechaentrega, pedidos.observacíon FROM clientes
INNER JOIN pedidos ON clientes.nit = pedidos.nit"
Dim adaptador As SqlDataAdapter
Dim tabladedatos As New DataTable
Try
adaptador = New SqlDataAdapter(seleccion, conexion)
adaptador.Fill(tabladedatos)
tabla.DataSource = tabladedatos
Catch ex As Exception
MsgBox("Error" & ex.Message)
End Try

Se crea la variable seleccion de tipo String que almacenará una


instrucción SQL. En dicha instrucción se relacionan las tablas clientes y pedidos
con la cláusula INNER JOIN. Primero se seleccionan los campos que se quiere
visualizar de las dos tablas (SELECT clientes.nit, clientes.empresa,
pedidos.nropedido,…..), con INNER JOIN se realiza la relación de estás
(FROM clientes INNER JOIN pedidos) y utilizando la cláusula ON se compara
el campo común entre las dos tablas, para el ejemplo el campo común es nit.

134
Por último se ejecuta la instrucción SQL y se rellena el objeto tabla con los
registros que cumplan la condición de relación entre las tablas clientes y
pedidos.

 Ejecutar el proyecto
Al ejecutarse el proyecto, se visualizará la figura 5.2. Si se pulsa el botón Ejecutar, se
visualizarán todos los registros relacionados de las tablas clientes y pedidos. Solamente
se visualizarán los registros cuyo nit de la tabla pedidos exista en la tabla clientes.

Figura 5.3 Formulario con la relación de las tablas clientes - pedidos.

5.1.2 Relación de tablas utilizando dos DataGridView

Crear un proyecto llamado RelacionConDataGridView, que permita a un usuario


visualizar en un primer objeto DataGridView los campos de la tabla clientes y al
seleccionar de dicho objeto un registro, mostrar en un segundo objeto DataGridView
todos los registros relacionados con la tabla pedidos de la base de datos
bdlibrovbnet.mdf.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario en la posición deseada: 2 Label, 2 DataGridView.

Figura 5.4 Interfaz de usuario (RelacionConDataGridView).

135
 Establecer las propiedades de los objetos de la interfaz de usuario
Establezca las siguientes modificaciones a los controles:

Tabla 5.2 Propiedades de controles proyecto RelacionConDataGridView.

Control Propiedad Valor


Label1 Text Clientes
name etiquetaclientes
Label2 Text Pedidos
name etiquetapedidos
DataGridView1 Name tablaclientes
DataGridView2 Name tablapedidos
Name formulario
Form1 Text Relación de tablas con
DataGridView.

Figura 5.5 Interfaz de usuario modificada (RelacionConDataGridView).

136
 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

b) Dé doble clic sobre el formulario para abrir el editor de código del


procedimiento formulario_ Load y escriba el siguiente código:

Dim conexion As String = "Data Source=(local)\SQLEXPRESS;Database=bdlibrovbnet;


Integrated Security=True"
Dim nvaconexion As New SqlConnection(conexion)
Try
nvaconexion.Open()
Dim conjuntodedatos As New DataSet
Dim datosclientes As New SqlDataAdapter("select * from clientes", nvaconexion)
Dim datospedidos As New SqlDataAdapter("select * from pedidos", nvaconexion)
datosclientes.Fill(conjuntodedatos, "clientes")
datospedidos.Fill(conjuntodedatos, "pedidos")
nvaconexion.Close()
With tablaclientes
.DataMember = "clientes"
.DataSource = conjuntodedatos
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
End With
With conjuntodedatos
.Relations.Add("relacion",.Tables("clientes").Columns("nit"),
.Tables("pedidos").Columns("nit"))
End With
With tablapedidos
.DataSource = conjuntodedatos
.DataMember = "clientes.relacion"
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
End With
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try

Se crea la variable nvaconexion de tipo SqlConecction que almacenará


la cadena de conexión a la base de datos bdlibrovbnet.mdf de SQL Server. En
un bloque Try se abre la conexión utilizando la función Open del objeto
nvaconexion, además se crean los objetos conjuntodedatos al cual se le asigna
espacio de memoria de tipo DataSet; datosclientes al cual se le asigna espacio
de memoria de tipo SqlDataAdapter y recibe como parámetros la selección de
todos los registros de la tabla clientes y el objeto nvaconexion; datospedidos al
cual se le asigna espacio de memoria de tipo SqlDataAdapter y recibe como
parámetros la selección de todos los registros de la tabla pedidos y el objeto
nvaconexion. Por otro lado, se rellenan los objetos datosclientes y

137
datospedidos con el conjunto de datos y su respectiva tabla. Al objeto
tablaclientes en su propiedad DataMember se le asigna el nombre de la tabla
clientes, a la propiedad DataSource el conjunto de datos y a la propiedad
SelectionMode se le asigna la operación de selección completa de la fila
(DataGridViewSelectionMode.FullRowSelect). Utilizando la propiedad
Relations y la función Add del objeto conjuntodedatos se crea un alias
llamado relacion para definir la relación entre las tablas clientes y pedidos por
el campo común (nit). Al objeto tablapedidos en su propiedad DataMember se
le asigna la relación de las tablas (clientes.relacion), en la propiedad
DataSource el conjunto de datos y en la propiedad SelectionMode se le asigna
la operación de selección completa de la fila
(DataGridViewSelectionMode.FullRowSelect).

 Ejecutar el proyecto

Al ejecutarse el proyecto, se visualizará al menos los registros de la tabla clientes. Si


selecciona un registro de la primera cuadrícula se mostrarán en la segunda cuadrícula
los registros relacionados entre las tablas clientes - pedidos.

Figura 5.6 Relación de las tablas clientes – pedidos con DataGridView.

5.1.3 Relación de tablas utilizando ComboBox

Realizar un proyecto llamado RelacionConComboBox, que permita a un usuario


seleccionar desde una lista desplegable el nombre de una empresa y visualizar en una
cuadrícula los pedidos que ha realizado dicha empresa.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario en la posición deseada: 1 Label, 1 ComboBox, 1
Button, 1 DataGridView.

Figura 5.7 Interfaz de usuario (RelacionConComboBox).


138
 Establecer las propiedades de los objetos de la interfaz de usuario
Establezca las siguientes modificaciones a los controles:

Tabla 5.3 Propiedades de controles proyecto RelacionConComboBox.

Control Propiedad Valor


Label1 Text Seleccione empresa:
name etiquetaclientes
Button1 Text Ver Pedidos
name boton
DataGridView1 Name tablapedidos
ComboBox1 Name lista
Name formulario
Form1 Text Relación de tablas con un
ComboBox.

Figura 5.8 Interfaz de usuario modificada (RelacionConComboBox).

139
 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:

Figura 5.9. Ventana Elegir la conexión de datos

Dé clic en el botón Nueva Conexión. En la ventana que se visualiza elija como


origen de datos Microsoft SQL Server y la base de datos bdlibrovbnet.

Figura 5.10 Ventana Agregar conexión.

140
Pulse el botón Aceptar, para visualizar nuevamente la ventana de Elegir la
conexión de datos. Allí pulse Siguiente> para visualizar el siguiente mensaje:

Figura 5.11 Ventana Microsoft Visual Studio.

Pulse el botón Sí para copiar el archivo de datos en la carpeta en donde guardó el


proyecto. Se visualizará la ventana de elección de tipo de comando:

Figura 5.12 Ventana elección tipo de comando.

Por omisión está


seleccionada la opción Usar instrucciones SQL. Pulse Siguiente> para visualizar la
ventana de generación de instrucciones SQL.

Figura 5.13 Ventana Generar las instrucciones SQL.

141
Aquí se puede
realizar la selección de los datos que debería cargar el adaptador de datos. Una forma es
escribir en la ventana instrucciones SQL y la otra es pulsar el botón Generador de
consultas. Para el ejemplo se pulsará el botón y se visualiza la siguiente figura:

Figura 5.14 Ventana Generador de consultas.

Seleccione la tabla clientes, pulse el botón Agregar y luego el botón Cerrar, se


visualizará la siguiente figura:
Figura 5.15 Generador de consultas con la tabla clientes.

142
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 5.16 Generador de consultas con los campos seleccionados (tabla clientes).

Pulse el botón Aceptar, y se visualizará la siguiente figura:


Figura 5.17 Generador de consultas con la instrucción SQL.

143
Al pulsar el botón Finalizar, se crearán los objetos: SqlDataAdapter1 y
SqlConnection1. Cambie el nombre de dichos objetos por datosclientes y
conexioncliente respectivamente.
Ahora seleccione nuevamente el control SqlDataAdapter de la ficha Datos y
realice los mismos pasos que se dieron anteriormente, pero esta vez seleccione la tabla
pedidos y cambie los nombres de los objetos SqlDataAdapter1 y sqlConnection1 por
datospedidos y conexionpedidos. Se visualizará la siguiente figura:

Figura 5.18 Formulario con los objetos SqlDataAdapter y sqlConnection.

Seleccione la opción Generar Conjunto de Datos del menú Datos y se


mostrará el siguiente cuadro de diálogo:

144
Figura 5.19 Ventana Generar conjunto de datos.

Elija la opción Nuevo y cambie el nombre DataSet1 por conjuntodedatos,


deshabilite el cuadro de verificación pedidos (datospedidos) y pulse el botón Aceptar
para agregar el conjunto de datos a la aplicación, como muestra la figura:

Figura 5.20 Formulario con el objeto conjuntodedatos.

 Escribir código
a) Antes de la apertura de la clase formulario se debe importar el siguiente espacio

145
de nombres:

Imports System.Data.SqlClient
Public Class formulario
……
End Class

b) Después de la apertura de la clase formulario y antes de los procedimientos


sub, inicialice las siguientes variables u objetos globales:
Public class formulario
Dim vistapedidos As DataView
:::::::::
End class

Se inicializa un objeto global llamado vistapedidos de tipo DataView


para obtener una vista de los datos.

c) Dé doble clic sobre el formulario para abrir el editor de código del


procedimiento formulario_ Load y escriba el siguiente código:

datosclientes.Fill(conjuntodedatos, "clientes")
datospedidos.Fill(conjuntodedatos, "pedidos")
lista.DataSource = conjuntodedatos.Tables("clientes")
lista.DisplayMember = conjuntodedatos.Tables("clientes").Columns(1).ToString
lista.ValueMember = conjuntodedatos.Tables("clientes").Columns(0).ToString
vistapedidos = conjuntodedatos.Tables("pedidos").DefaultView

Se rellenan los objetos datosclientes y datospedidos con el conjunto de


datos y su respectiva tabla. Al objeto lista en su propiedad DataSource se le
asigna la tabla clientes del conjunto de datos, a la propiedad DisplayMember se
le asigna el valor del segundo campo de la tabla clientes (columna uno (1) –
empresa) y a la propiedad ValueMember se le asigna el valor del primer campo
de la tabla clientes (columna cero (0) - nit). Por último al objeto vistapedidos se
le asigna la tabla pedidos del conjunto de datos y utilizando la propiedad
DefaultView se personaliza la vista de los datos.

d) Dé doble clic sobre el objeto boton para abrir el editor de código y escriba el
siguiente código:

Dim datoempresa As String = lista.SelectedValue


vistapedidos.RowFilter = "nit = '" & datoempresa & "'"
tablapedidos.DataSource = vistapedidos

Se inicializa una variable llamada datoempresa de tipo String que


almacenará lo seleccionado en el objeto lista por intermedio de la propiedad
SelectedValue. Se utiliza la propiedad RowFilter del objeto vistapedidos para
filtrar los registros por el campo nit de acuerdo con el valor de la variable
datoempresa. Por último se asigna a la propiedad DataSource del objeto
tablapedidos el contenido del objeto vistapedidos.

e) Dé doble clic sobre el objeto lista para abrir el editor de código del
procedimiento lista_SelectedIndexChanged y escriba el siguiente código:

146
tablapedidos.DataSource = Nothing

Utilizando la palabra clave nothing se libera en memoria el contenido


que tenga la propiedad DataSource del objeto tablapedidos.

 Ejecutar el proyecto
Al ejecutarse el proyecto se visualizará la figura 5.8, 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 lista por
true). Si selecciona un nombre de empresa y se pulsa el botón Ver Pedidos, se
visualizará en la cuadrícula todos los registros que estén relacionados con la tabla
pedidos.

Figura 5.21 Relación de las tablas clientes – pedidos con DataGridView.

5.1.4 Reporte con tablas relacionadas

Realizar un proyecto llamado ReporteTablasRelacionadas, que permita a un usuario


visualizar en un formulario un reporte de todos los registros relacionados de las tablas
clientes – pedidos de la base de datos bdlibrovbnet.mdf.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario en la posición deseada: 1
MicrosoftReportViewer.

Figura 5.22 Interfaz de usuario (ReporteTablasRelacionadas).

147
 Establecer las propiedades de los objetos de la interfaz de usuario
Establezca las siguientes modificaciones a los controles:

Tabla 5.4 Propiedades de controles proyecto ReporteTablasRelacionadas.

Control Propiedad Valor


MicrosoftReportViewer1 Name reporte
Name formulario
Form1 Text Reporte con tablas
relacionadas.

Figura 5.23 Interfaz de usuario modificada (ReporteTablasRelacionadas).

Del menú Ver seleccione la opción Explorador de servidores, para visualizar

148
la siguiente figura:

Figura 5.24 Ventana Explorador de servidores.

Al pulsar el icono conectar con bases de datos , se visualizará lá ventana de


Agregar conexión como muestra la figura:

Figura 5.25 Ventana Agregar conexión.

En la ventana que se visualiza elija como origen de datos Microsoft SQL


Server y la base de datos bdlibrovbnet. Se visualizará la siguiente figura:

Figura 5.26 Ventana con la base de datos seleccionada.

149
Pulse el boton Aceptar, para observar la siguiente figura:

Figura 5.27 Base de datos seleccionada en el Explorador de servidores.

Dé clic en el signo (+) al lado del nombre de la base de datos para visualizar la
estructura definida en la base de datos. Seleccione la carpeta vistas y dé clic derecho
para ver en el menú contextual la opción Agregar nueva vista, selecciónela para
visualizar la ventana Agregar tabla.

Figura 5.28 Ventana Agregar tabla.

150
Agregue las tablas clientes, pedidos y pulse el botón Cerrar. Por otro lado, de
la tabla clientes seleccione los campos nit, empresa, representante y de la tabla
pedidos nropedido, fechaentrega, fechavence, observacíon. Se obtendrá la siguiente
figura:

Figura 5.29 Vista con las tablas clientes – pedidos.

Cierre la ventana de la vista (parte superior derecha), para ver la ventana de


guardar el cambio de la vista.

Figura 5.30 Ventana guardar cambio de la vista.


151
Dé clic sobre el botón Sí, para elegir el nombre de la vista.

Figura 5.31 Ventana elegir nombre vista.

Escriba como nombre de la vista tablasrelacionadas y pulse el botón Aceptar,


para guardar la vista en la base de datos.

Figura 5.32 Base de Datos con la vista tablasrelacionadas.

152
Elija la ficha de diseño del formulario y dé clic sobre la flecha del objeto
reporte y seleccione la opción Diseñar nuevo informe.

Figura 5.33 Seleccionar opción Diseñar nuevo informe del objeto reporte.

Al seleccionar dicha opción se visualizará la ventana del asistente de informes.

Figura 5.34 Asistente para informes.

153
Dé clic en Siguiente, para ver la ventana de configuración de orígenes de datos.

Figura 5.35 Asistente para la configuración de orígenes de datos.

Dé clic en el botón Nueva Conexión. En la ventana que se visualiza elija como


origen de datos Microsoft SQL Server y la base de datos bdlibrovbnet.

Figura 5.36 Ventana con la base de datos seleccionada.

154
Pulse Siguiente> para visualizar el siguiente mensaje:

Figura 5.37 Ventana Microsoft Visual Studio.

Pulse el botón Sí para copiar el archivo de datos en la carpeta en donde guardó el


proyecto y visualizará la ventana de guardar cadena de conexión:

Figura 5.38 Ventana Guardar cadena de conexión.

Cambie el nombre de la conexión que allí aparece por conexion y pulse el botón
Siguiente>, se visualizará la siguiente figura:

155
Figura 5.39 Ventana de elección de objetos de la base de datos.

Pulse el signo (+) al lado de Vistas para desplegar las vistas actuales de la base
de datos, seleccione la vista tablasrelacionadas. Por otro lado, cambie el nombre del
DataSet que allí aparece por conjuntodedatos y pulse el botón Finalizar, para
visualizar la figura 5.40:

Figura 5.40 Asistente para informes – seleccionar el origen de datos.

156
Pulse los signos (+) para desplegar la vista. Dé clic en Siguiente> para visualizar
la ventana de selección de tipo de informe.

Figura 5.41 Asistente para informes – seleccionar el tipo de informe.

Seleccione la opción Tabular o Matriz y de clic en Siguiente> para visualizar


la ventana de diseño de tabla.

Figura 5.42 Asistente para informes – diseñar la tabla.

157
Seleccione los campos nit, empresa, representante y sitúelos en la casilla
Grupo>, el resto de campos en la casilla Detalles>. Se observará la siguiente figura:

Figura 5.43 Diseño de la tabla con los campos seleccionados.

Dé clic en Siguiente> para visualizar la ventana de elección de diseño de la


tabla.

Figura 5.44 Asistente para informes – elegir el diseño de la tabla.

158
Seleccione la opción Escalonado o Bloquear y si desea incluir subtotales o
no. Dé clic en Siguiente> para visualizar la ventana de estilo de la tabla.

Figura 5.45 Asistente para informes – elegir el estilo de tabla.

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.

Figura 5.46 Ventana de finalización del asistente de informes.

159
Donde aparece el nombre del informe cámbielo por Informe Clientes - Pedidos
y dé clic en Finalizar> para visualizar el diseño final del informe.

Figura 5.47 Diseño final del informe.

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.

Figura 5.48 Seleccionar opción Elegir informe.

Allí escoja ReporteTablasRelacionadas.Informe Clientes-Pedidos.rdlc, para


visualizar el formulario con los objetos conjuntodedatos,
tablasrelacionadasBindingSource y tablasrelacionadasTableAdapter.

160
Figura 5.49 Formulario con los objetos de manejo de datos.

 Ejecutar el proyecto
Al ejecutarse el proyecto, se visualizará la figura 5.50. Por medio de la barra de
herramientas se podrá desplazar hacia las diferentes hojas del reporte, así como
imprimir el reporte, modificar el diseño del informe, configurar la página, cambiar el
tamaño de visualización del informe y buscar texto dentro del informe.

Figura 5.50 Formulario con el reporte de la relacion clientes- pedidos.

161
5.2 Ejercicios de relación de tablas

1. Realizar un programa que permita hacer una relación entre tres tablas de una
base de datos en SQL Server.
2. Diseñar un programa que permita realizar una relación entre dos tablas con un
filtro por el campo común.
3. Hacer un programa que permita visualizar en un reporte los registros de una
relación de tres tablas.
4. Crear un programa que permita realizar una relación de tres tablas; para la
primera relación se deben seleccionar los datos desde un ListBox y visualizarlos
en un DataGridView. Desde este se debe seleccionar un registro y mostrar los
registros de la segunda relación en un segundo DataGridView.
5. Elaborar un programa que permita realizar una relación de tres tablas y los
registros se deben mostrar en tres DataGridView.
6. Realizar un programa que permita visualizar un reporte de los registros
relacionados cuyos nit sean mayores que 500.
7. Hacer un programa que permita visualizar un reporte de los registros
relacionados cuyas empresas empiecen por la letra C.
8. Diseñar un programa que permita realizar y mostrar en un TreeView los
registros relacionados de tres tablas.
9. Crear un programa que permita mostrar en un TreeView los registros
relacionados de dos tablas cuyo nombre de empresa contenga la letra O.
10. Elaborar un programa que permita realizar un reporte con registros relacionados
utilizando CrystalReportViewer.

162
6. MANEJO DE ARCHIVOS CON ASP.NET

ASP.NET es un marco de trabajo de programación que se ejecuta desde un servidor


Web que genera y administra dinámicamente formularios Web. ASP.NET ofrece varias
ventajas importantes:

 Mejor rendimiento. ASP.NET es un código de Common Language Runtime


compilado que se ejecuta en el servidor. ASP.NET aprovecha las ventajas del
enlace anticipado, la compilación just-in-time, la optimización nativa y los
servicios de caché desde el primer momento.

 Compatibilidad con herramientas de primer nivel. El marco de trabajo de


ASP.NET se complementa con un diseñador y una caja de herramientas muy
completos en el entorno integrado de programación (Integrated Development
Environment, IDE) de Visual Studio.

 Eficacia y flexibilidad. Debido a que ASP.NET se basa en Common Language


Runtime, la eficacia y la flexibilidad de toda esa plataforma se encuentra
disponible para los programadores de aplicaciones Web. La biblioteca de clases
de .NET Framework, la Mensajería y las soluciones de acceso a datos se
encuentran accesibles desde el Web de manera uniforme.

 Simplicidad. El marco de trabajo de página de ASP.NET permite generar


interfaces de usuario que separan claramente la lógica de aplicación del código
de presentación, y controlar eventos en un sencillo modelo de procesamiento de
formularios de tipo Visual Basic .NET.

 Facilidad de uso. ASP.NET emplea un sistema de configuración jerárquico,


basado en texto, que simplifica la aplicación de la configuración al entorno de
servidor y las aplicaciones Web. Debido a que la información de configuración
se almacena como texto sin formato, se puede aplicar la nueva configuración sin
ayuda de herramientas de administración local.

 Escalabilidad y disponibilidad. ASP.NET se ha diseñado teniendo en cuenta la


escalabilidad, con características diseñadas específicamente a medida, con el fin
de mejorar el rendimiento en entornos agrupados y de múltiples procesadores.

 Posibilidad de personalización y extensibilidad. ASP.NET presenta una


arquitectura bien diseñada que permite a los programadores insertar su código en
el nivel adecuado.

 Seguridad. Con la autenticación de Windows integrada y la configuración por


aplicación, se puede tener la completa seguridad de que las aplicaciones están a
salvo.

6.1 Manejo de Archivos de texto con ASP.NET.

Como se vio en el Capítulo 1, Visual Basic .NET permite interactuar con datos externo
a un proyecto, realizar las diferentes operaciones con archivos de texto plano, como son:
la creación, eliminación, sobreescritura de archivos, así como guardar, leer o adicionar
información a éstos, además importar o exportar información desde y hacia Visual

163
Basic .NET. Con ASP.NET y trabajando en el entorno integrado de desarrollo de Visual
Studio 2008 también es posible desde formularios Web realizar estas operaciones con
archivos de texto plano.

Para procesar archivos se hace necesario el uso del espacio de nombres


System.IO. El espacio de nombres System.IO contiene enumeraciones para la apertura
de archivos, el acceso a los archivos y el uso compartido de archivos, además de clases
para las operaciones de rutas de acceso y la manipulación de flujos de datos.

6.2 Ejemplos de manejo de archivos con ASP.NET.

6.2.1 Cargar archivo con el control FileUpLoad.

Crear un sitio Web FileUpLoadArchivoTexto y realizar un programa que permita a un


usuario cargar un archivo en un formulario Web y guardar dicho archivo en el sitio
Web, utilizando el control FileUpLoad.

NOTA: Si lo considera necesario puede revisar el Anexo B, donde se explica


brevemente la creación, la interfaz de usuario, el establecimiento de propiedades de los
controles, la escritura de código y la ejecución de un nuevo sitio Web.

 Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control específico y ubique los


siguientes controles en el formulario Web en la posición deseada: 1 Label, 1 TextBox,
1 Button, 1 FileUpLoad.

Figura 6.1 Interfaz de usuario (FileUpLoadArchivoTexto).

164
 Establecer las propiedades de los objetos de la interfaz de usuario.
Establezca las siguientes modificaciones a las propiedades en los controles:

Tabla 6.1 Propiedades de los controles del sitio Web FileUpLoadArchivoTexto.

Control Propiedad Valor


Label1 id titulo
Text Cargar Archivo en un
Formulario Web.
Font - Bold true
TextBox1 id texto
Text En blanco
TextMode Multiline
Button1 id boton
Text Cargar Archivo
FileUpLoad1 id cargadorarchivos
Form1 id formulario
Document Title Cargar Archivo en
Formulario Web.
Default.aspx.vb Nombre de archivo (dé pagina.aspx.vb
clic derecho sobre la
página).

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

Figura 6.2 Controles con propiedades modificadas (FileUpLoadArchivoTexto).

NOTA: Si no se puede modificar el ancho, el alto o la posición de un objeto, seleccione


dicho objeto y del menú Formato escoja la opción Posición y allí en el Estilo de
ubicación señale el cuadro con el rótulo de nombre Relativo para poder movilizar o
cambiar de tamaño el objeto escogido.

165
 Escribir código

a) Seleccione el objeto boton, dé doble clic para abrir el editor de código


botonguardar_Click y escriba el siguiente código:
Try
If cargadorarchivos.HasFile Then
If (cargadorarchivos.FileBytes.Length > 0) Then
texto.Text = texto.Text & "Tipo de Contenido del Archivo: " &
cargadorarchivos.PostedFile.ContentType & vbCrLf
texto.Text = texto.Text & "Tamaño de archivo: " &
cargadorarchivos.PostedFile.ContentLength & vbCrLf
texto.Text = texto.Text & "Nombre del archivo: " & cargadorarchivos.FileName
& vbCrLf
cargadorarchivos.SaveAs(MapPath("./" & cargadorarchivos.FileName))
texto.Text = texto.Text & "El archivo se guardará en: " & MapPath("./") & vbCrLf
texto.Text = texto.Text & "La informacion del archivo es:" &
cargadorarchivos.FileContent.ReadByte
End If
Else
MsgBox("No se ha seleccionado archivo", MsgBoxStyle.Critical, "Cargar Archivo")
End If
Catch ex As Exception
MsgBox("Error:" & ex.Message, MsgBoxStyle.Critical)
End Try

Dentro del bloque Try se pregunta si el objeto cargadorarchivos


(FileUpLoad) tiene escrito en el campo de texto un nombre de archivo utilizando
el método HasFile. Si la respuesta es verdadera, se determina si la longitud del
archivo es mayor que cero utilizando el método Length de la propiedad
FileBytes del objeto cargadorarchivos para visualizar en el objeto texto el tipo
de contenido del archivo por medio de la función ContentType de la propiedad
PostedFile, el nombre del archivo (FileName), la ruta donde se guardará el
archivo que se ha cargado (MapPath (“./”), el contenido del archivo se
mostrará en formato byte por intermedio de la función ReadByte de la
propiedad FileContent. Si por el contrario no se ha escrito en el campo de texto
del objeto cargadorarchivos, se mostrará el mensaje “No se ha seleccionado
archivo”. En el bloque Catch si se genera algún error, se mostrará un mensaje.

 Ejecutar la aplicación Web

Para ejecutar el proyecto pulse la tecla F5 o el icono , se visualizará la siguiente


figura:

166
Figura 6.3 Ejecución del sitio Web FileUpLoadArchivoTexto.

Pulse el botón Examinar, seleccione cualquier archivo de texto y luego pulse el


botón Cargar Archivo para visualizar la información relativa al archivo, así como la
ruta en donde está guardado dicho archivo; se obtendría una figura similar a la
siguiente:

Figura 6.4 Formulario Web con la información del archivo seleccionado.

167
6.2.2 Manejo de archivos de texto con StreamWriter y StreamReader.

Crear un sitio Web llamado GuardarLeerArchivodeTexto y hacer un programa que


permita a un usuario guardar información en un archivo de texto plano, así como leer
dicha información, utilizando las clases StreamWriter y StreamReader.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en la página Web en la posición deseada: 1 Label, 1 TextBox, 2
Button.

Figura 6.5 Interfaz de usuario (GuardarLeerArchivodeTexto).

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


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

Tabla 6.2 Propiedades de los controles del sitio web GuardarLeerArchivodeTexto.

Control Propiedad Valor


Label1 id titulo
Text Guardar y Leer un archivo de
texto.
Font – Bold true
TextBox1 id texto
Text En blanco
TextMode Multiline
Button1 id botonguardar
Text Guardar Información
Button2 id botonabrir
Text Leer Información
Form1 id formulario
Document Title Guardar/leer archivo de texto
Default.aspx.vb Nombre de archivo (dé pagina.aspx.vb
clic derecho sobre la
página).

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

Figura 6.6 Interfaz de usuario modificada (GuardarLeerArchivodeTexto).

 Escribir código
a) Seleccione el objeto botonguardar, dé doble clic para abrir el editor de código y
escriba el siguiente código:
Try
Dim miruta As String = Server.MapPath("./miarchivo.txt")
Dim archivo As New System.IO.StreamWriter(miruta)
archivo.Write(texto.Text)
archivo.Close()
texto.Text = ""
MsgBox("Información guardada...", MsgBoxStyle.Information, "Guardar en archivo")
Catch ex As Exception
MsgBox("No se pudo guardar la informacion", MsgBoxStyle.Critical,
"Guardar en archivo")
End Try

Se definen las variables miruta de tipo String, la cual se inicializa con la


ruta física del archivo miarchivo.txt que se guardará en la misma carpeta del
sitio Web y que corresponde a la ruta de acceso virtual al servidor Web,
utilizando la función MapPath de la propiedad Server del espacio de nombres
System.Web.HttpServerUtility; la variable archivo asignándosele un espacio
de memoria de tipo System.IO.StreamWriter (), a la cual se le envía como
parámetro la ruta y el nombre del archivo (miruta). Utilizando el método Write
se escribe el contenido del objeto texto en el archivo. Por otro lado, se cierra el
archivo utilizando el método close () y se limpia el objeto texto. Además se
muestra un mensaje confirmando la acción realizada.

b) Seleccione el objeto botonleer, dé doble clic para abrir el editor de código y


escriba el siguiente código:

Try
Dim miruta As String = Server.MapPath("./miarchivo.txt")

169
Dim archivo As New System.IO.StreamReader(miruta)
texto.Text = archivo.ReadToEnd
archivo.Close()
Catch ex As Exception
MsgBox("No se pudo leer la informacion", MsgBoxStyle.Critical,”Guardar archvo”)
End Try

Se definen las variables miruta de tipo String, la cual se inicializa con la


ruta física del archivo miarchivo.txt que se guardará en la carpeta del nombre
del sitio Web y que corresponde a la ruta de acceso virtual al servidor Web,
utilizando la función MapPath de la propiedad Server del espacio de nombres
System.Web.HttpServerUtility; la variable archivo asignándosele un espacio
de memoria de tipo System.IO.StreamReader (). Utilizando el método
ReadToEnd se lee el contenido del archivo y se le asigna al objeto texto. Por
último se cierra el archivo.

 Ejecutar la aplicación Web


Al ejecutarse el proyecto en el entorno de desarrollo de Visual Web Developer/2008, se
visualizará la ventana de depuración.

Figura 6.7 Ventana de Depuración.

Seleccione la opción Modificar el archivo Web.config para habilitar la


depuración y pulse el botón Aceptar. Se visualizará la figura 6.8. Al digitar el texto
“guardando información en el archivo de texto”, el formulario Web presentaría el
siguiente aspecto:

Figura 6.8 Ejecución Pagina Web (GuardarLeerArchivodeTexto).

170
Si se pulsa el botón Guardar información, se limpia el objeto texto y se
mostrará una caja de mensajes reportando que la información ha sido guardada y en la
carpeta donde se guardó el sitio Web ya se debe encontrar el archivo de texto con la
información adicionada. Al pulsar el boton Leer información se mostrará en el objeto
texto la información del archivo de texto.

Figura 6.9 Mensaje de información guardada en el archivo de texto.

6.2.3 Guardar /Leer Archivo de texto con FileSystem

Crear un sitio Web llamado FileSystem y hacer un programa que permita a un usuario
guardar información en un archivo de texto plano, leer la información de este utilizando
la clase FileSystem.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en la página Web en la posición deseada: 1 Label, 1 TextBox, 2
Button.

Figura 6.10 Interfaz de usuario (FileSystem)

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

Establezca las siguientes modificaciones a los controles:

171
Tabla 6.3 Propiedades de los controles del sitio Web FileSystem.

Control Propiedad Valor


Label1 id titulo
Text Guardar – Leer archivo de
texto con FileSystem.
Font - Bold true
TextBox1 id texto
Text En blanco
TextMode Multiline
Button1 id botonguardar
Text Guardar en archivo
Button2 id botonleer
Text Leer de Archivo
Document Title Guardar/Leer Archivo de
Texto.
Form1 id formulario
Default.aspx.vb Nombre de pagina.aspx.vb
archivo.

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

Figura 6.11 Interfaz de usuario modificada (FileSystem).

 Escribir código

a) Seleccione el objeto botonguardar, dé doble clic para abrir el editor de código y


escriba el siguiente código:
Try
Dim archivolibre As Integer = FreeFile()
FileSystem.FileOpen(archivolibre, MapPath("./archivodetexto.txt"),
OpenMode.Output)
FileSystem.PrintLine(archivolibre, texto.Text)

172
FileSystem.FileClose(archivolibre)
texto.Text = ""
MsgBox("Informacion guardada en archivo", MsgBoxStyle.Information,
"Guardar archivo")
Catch ex As Exception
MsgBox("La Informacion no fue guardada en archivo" & ex.Message,
MsgBoxStyle.Critical, "Guardar archivo")
End Try

En el anterior código se crea una variable archivolibre de tipo Integer a


la que se le asigna el valor numérico del archivo libre por intermedio de la
función FreeFile. Por otro lado, se utiliza la función FileOpen de la clase
FileSystem que recibe como parámetros: archivolibre, valor numérico del
archivo libre; MapPath (“./”) que corresponde a la ruta de acceso virtual al
servidor Web; OpenMode.OutPut, modo de apertura del archivo (salida). Con
el método PrintLine se imprime el contenido del objeto texto, luego se limpia
dicho objeto y por último se cierra el archivo con la función FileClose. Además
se visualizará el mensaje “Información guardada en archivo”.

b) Seleccione el objeto botonabrir, de doble clic para abrir el editor de código y


escriba el siguiente código:

Try
Dim archivolibre As Integer = FreeFile()
FileSystem.FileOpen(archivolibre, MapPath("./archivodetexto.txt"),
OpenMode.Input)
Dim linea As String
Do Until EOF(archivolibre)
linea = FileSystem.LineInput(archivolibre)
texto.Text = texto.Text & linea & vbCrLf
Loop
FileSystem.FileClose(archivolibre)
Catch ex As Exception
MsgBox("La Informacion no fue leida" & ex.Message, MsgBoxStyle.Critical,
"Leer archivo")
End Try

Se utiliza la función FileOpen de la clase FileSystem que recibe como


parámetros: archivolibre, valor numérico del archivo libre; MapPath (“./”) que
corresponde a la ruta de acceso virtual al servidor Web; OpenMode.InPut,
modo de apertura del archivo (entrada). Se define una variable llamada linea de
tipo String, la cual servirá para guardar cada línea del archivo. Por otro lado, se
crea un ciclo (Do Until – Loop) que recorrerá el archivo hasta el final (EOF)
línea por línea y utilizando el método LineInput de la clase FileSystem se le
asignará dicha información al objeto texto, por último se cierra el archivo.

 Ejecutar la aplicación Web


Al ejecutarse el sitio Web se visualizará en el explorador la figura 6.12. Al escribir
“guardando información en el archivo para leer después utilizando el botón leer de
archivo” en el objeto texto, el formulario Web con la información quedaría de la
siguiente forma:

173
Figura 6.12 Formulario Web con información para ser guardada.

Al pulsar el botón Guardar en archivo, se guardará dicha información en el


archivo “archivodetexto.txt” en la ruta del sitio Web y el objeto texto quedará en
blanco. Se visualizará el mensaje “Información guardada en archivo”. Si se pulsa el
botón Leer de Archivo, se leerá el contenido del archivo de texto y se mostrará la
información en el objeto texto.

Figura 6.13 Mensaje de información guardada.

174
6.3 Ejercicios de archivos de texto con ASP.NET

1. Hacer un sitio Web que permita guardar 10 datos y leerlos en un archivo de texto
plano utilizando la clase FileSystem.
2. Crear un sitio Web que permita guardar 10 datos y leerlos en un archivo de texto
plano utilizando las clases StreamWriter y StreamReader.
3. Diseñar un sitio Web que permita cargar archivos sólo de extensión .doc utilizando
FileUpLoad.
4. Hacer un sitio Web que permita adicionar información a un archivo de texto
previamente creado.
5. Diseñar un sitio Web que permita importar todos los datos que existan en un archivo
de Excel y visualizarlos en un GridView (apóyese en los ejemplos del capítulo 1).
6. Elaborar un sitio Web que permita importar todos los datos que existan en un
archivo de Excel y visualizarlos en un DataList (apóyese en los ejemplos del
capítulo 1).
7. Hacer un sitio Web que permita exportar un rango de datos a una tabla de Word
(apóyese en los ejemplos del capítulo 1).
8. Crear un sitio Web que permita importar los datos de un archivo de texto a un
GridView (apóyese en los ejemplos del capítulo 1).
9. Diseñar un sitio Web que permita exportar los datos de un control DataList a Excel
(apóyese en los ejemplos del capítulo 1).
10. Realizar un sitio Web que permita exportar los datos de un GridView a Word
(apóyese en los ejemplos del capítulo 1).

175
7. BASE DE DATOS CON ASP.NET

Con los proyectos Windows Forms se logró manipular diferentes bases de datos, como
fue realizar la conexión a las bases de datos SQL Server, Access y Oracle, el
desplazamiento entre los registros de una tabla, las operaciones entre una o más tablas,
la creación de reportes de una o más tablas utilizando la tecnología ADO.NET.

Con ASP.NET también es posible realizar dicha manipulación en diversas bases


de datos utilizando los diferentes controles de los formularios Web para el manejo de
datos. Para trabajar con bases de datos y ASP.NET se debe tener en cuenta la
conceptualización sobre bases de datos y el manejo del lenguaje de consulta
estructurado SQL realizada en el Capítulo 2.

En este capítulo se crearán ejemplos que permitan utilizar los diferentes


controles Web para conectarse, desplazarse, realizar operaciones con una o más tablas
de la base de datos bdlibrovbnet.mdf de SQL Server y sus tablas clientes, pedidos,
productos y ventas (Ver anexo C).

Por otro lado, si lo considera necesario puede revisar el Anexo B, donde se


explica brevemente la creación, la interfaz de usuario, el establecimiento de propiedades
de los controles, la escritura de código y la ejecución de un nuevo sitio Web.

7.1 Ejemplos de manipulación de bases de datos con ASP.NET

7.1.1 Pagina Web con los campos de una tabla

Dentro de un sitio Web llamado WebCamposTabla, realizar un programa que permita


visualizar en una caja de texto la estructura de la tabla clientes de la base de datos
bdlibrovbnet.mdf de SQL Server.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en la página Web en la posición deseada: 1 Button, 1 TextBox y 1
Label.

Figura 7.1 Interfaz de usuario (WebCamposTabla).

176
 Establecer las propiedades de los objetos de la interfaz de usuario
Establezca las siguientes modificaciones a los controles:

Tabla 7.1 Propiedades de controles proyecto WebCamposTabla.


Control Propiedad Valor
Label1 id titulo
Text Estructura de la tabla clientes.
Font - Bold true
TextMode Multiline
TextBox1 id texto
Text blanco
Button1 id boton
Text Ver Estructura
Form1 id formulario
Document title Estructura de la tabla clientes de SQL
Server,
Default.aspx.vb Nombre de pagina.aspx.vb
archivo.

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

Figura 7.2 Interfaz de usuario modificada (WebCamposTabla).

 Escribir código

a) Antes de la apertura de la clase Default se debe importar los siguientes espacios


de nombres:
Imports System.Data
Imports System.Data.SqlClient
Partial Class Default
Inherits System.Web.UI.Page
….
……
End Class

177
Los espacios de nombres System.Data y System.Data.SqlClient son
necesarios para utilizar las diferentes clases que permitan las operaciones con
bases de datos en una aplicación Web, en este caso SQL Server.

b) Seleccione el objeto boton, dé doble clic para abrir el editor de código y escriba
el siguiente código:

Dim conexion As String = "Data Source=(local)\SQLEXPRESS;Database=bdlibrovbnet;


Integrated Security=True"
Dim datostabla As DataTable
Dim datoscolumna As DataColumn
Dim conjuntodedatos As New DataSet()
Dim seleccion As New SqlDataAdapter("SELECT * FROM clientes", conexion)
seleccion.Fill(conjuntodedatos, "Clientes")
seleccion = Nothing
Dim consulta As String = ""
consulta += "Conexión establecida: " & conexion & vbCrLf & vbCrLf
For Each datostabla In conjuntodedatos.Tables
consulta += "Estructura de la Tabla: " & datostabla.TableName & vbCrLf & vbCrLf
For Each datoscolumna In datostabla.Columns
consulta += datoscolumna.ColumnName & vbTab & "(" &
datoscolumna.DataType.Name & ")" & vbCrLf
Next
Next
texto.Text = (consulta)

Se crea una variable llamada conexion que contendrá la cadena de


conexión a la base de datos de SQL Server. La cadena de conexión debe
contener como mínimo los siguientes parámetros:

 Data Source: se le asigna la ruta donde se encuentra el servidor SQL


Server, en este caso, SQL Server se instaló en el computador de
trabajo por lo cual el nombre del servidor es localhost o como
dirección IP 127.0.0.1.
 Database: se le asigna el nombre de la base de datos a la que se
quiere conectar.
 Integrated Security: se le asigna true o false para determinar si la
seguridad es integrada o no.

Luego se crean los siguientes objetos: datostabla de tipo DataTable;


datoscolumna de tipo DataColumn; conjuntodedatos con asignación de
espacio de memoria de tipo DataSet; seleccion de tipo SqlDataAdapter a la
cual se le asigna la sentencia SQL (Select * From Clientes) y la cadena de
conexión (conexion), luego se rellena (fill) el objeto selección con el conjunto
de datos y el nombre de la tabla, como también se libera dicho objeto (nothing).
Por otro lado, se crea una variable llamada consulta de tipo String que
almacenará la cadena de conexión y la estructura de la tabla. Además se crea un
ciclo externo que recorrerá las tablas que contenga el objeto conjuntodedatos en
su propiedad Tables (en este caso solamente estará la tabla clientes) y se
asignará a la variable consulta el texto “Estructura de la Tabla:” concatenado
con el nombre de la tabla (TableName). En un segundo ciclo se recorrerá cada
uno de los campos de la tabla seleccionada y se adicionará a la variable consulta
el nombre del campo utilizando la propiedad ColumnName del objeto

178
datoscolumna y el nombre del tipo de dato de dicho campo (DataType.Name),
por último se muestra en el objeto texto el contenido de la variable consulta.

 Ejecutar la aplicación Web


Al ejecutarse la aplicación Web, se visualizará la figura 7.3:

Figura 7.3 Ejecución sitio del Web WebCamposTabla.

Al pulsarse el botón Ver Estructura se visualizará la cadena de conexión, los


campos y el tipo de dato de la tabla clientes, como se aprecia en la siguiente figura:

Figura 7.4 Pagina Web con la estructura de la tabla clientes.

179
7.1.2 Conexión a una base de datos desde un Formulario Web

Dentro de un sitio Web llamado ConexionBDWebSQLServer, crear un programa que


permita a un usuario realizar una conexión a una base de datos de SQL Server y
mostrar los datos de una tabla llamada clientes en un objeto GridView, utilizando
código de Visual Basic .NET.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en la página Web en la posición deseada: 2 Label y 1 GridView.

Figura 7.5 Interfaz de usuario (ConexionBDWebSQLServer).

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

Establezca las siguientes modificaciones a los controles:

Tabla 7.2 Propiedades de controles proyecto ConexionBDWebSQLServer.

Control Propiedad Valor


GridView1 id tabla
Label1 id titulo
Text Conexión a una base de datos de SQL
SERVER – tabla clientes.
Font - Bold true
Label2 id etiquetaregistros
Text blanco
Font - Bold True
Form1 id formulario
Document title Conexión a una base de datos
Default.aspx.vb Nombre de pagina.aspx.vb
archivo.

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

Figura 7.6 Interfaz de usuario modificada (ConexionBDWebSQLServer).

 Escribir código

a) Antes de la apertura de la clase Default se debe importar los siguientes espacios


de nombres:
Imports System.Data
Imports System.Data.SqlClient
Partial Class Default
Inherits System.Web.UI.Page
….
……
End Class

Los espacios de nombres System.Data y System.Data.SqlClient son necesarios


para utilizar las diferentes clases que permitan las operaciones con bases de
datos, en este caso SQL Server.

b) Dé doble clic sobre la página para abrir el editor de código del procedimiento
Page_Load y escriba el siguiente código:
Dim conexion As String
conexion = "Data Source=(local)\SQLEXPRESS;Database=bdlibrovbnet;Integrated
Security=True"
Dim seleccion As String = "SELECT * FROM clientes"
Dim adaptadordedatos As SqlDataAdapter
Dim tabladedatos As New DataTable
Try
adaptadordedatos = New SqlDataAdapter(seleccion, conexion)
adaptadordedatos.Fill(tabladedatos)
tabla.DataSource = tabladedatos

181
tabla.DataBind()
etiquetaregistros.text=”Total de Registros:” & talabdedatos.Rows.Count
Catch ex As Exception
MsgBox("Error: " & ex.Message)
End Try

Se crean los siguientes objetos: seleccion de tipo String a la cual se le


asigna la sentencia SQL Select * From Clientes (se van a mostrar en la
cuadrícula todos los registros de la tabla clientes); adaptadordedatos de tipo
SqlDataAdapter el cual será el adaptador de datos para manipular la base de
datos SQL Server; 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 tabla 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 tabla el origen de datos (DataBind()) y por último se
establece a la propiedad Text del objeto etiquetaregistros el texto “Total de
Registros:” 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.

 Ejecutar la aplicación Web


Al ejecutarse la aplicación Web, se visualizará en la página Web los datos de la tabla
clientes de la base de datos bdlibrovbnet.mdf de SQL Server en el objeto tabla:

Figura 7.7 Formulario Web con datos de la tabla clientes.

182
7.1.3 Conexión a SQL Server con el control DetailsView

Dentro de un sitio Web llamado ConexionWebDetailsView, realizar un programa que


permita a un usuario hacer una conexión a una base de datos de SQL Server y mostrar
los datos de tabla clientes en un objeto DetailsView.

 Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control específico y ubique los


siguientes controles en la página Web en la posición deseada: 1 Label y 1 DetailsView.

Figura 7.8 Interfaz de usuario (ConexionWebDetailsView).

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


Establezca las siguientes modificaciones a los controles:

Tabla 7.3 Propiedades de controles del sitio Web ConexionWebDetailsView.


Control Propiedad Valor
DetailsView1 id detalles
Label1 id titulo
Text Conexión a una base de datos de SQL
SERVER - DetailsView.
Font - Bold true
Form1 id formulario
Document title Conexión a una base de datos con un
DetailsView
Default.aspx.vb Nombre de pagina.aspx.vb
archivo.

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

183
Figura 7.9 Interfaz de usuario con controles modificados.

 Establecer la conexión

Seleccione el objeto DetailsView llamado detalles y en la flecha que aparece en el lado


superior derecho, dé clic en el mouse para visualizar las Tareas de DetailsView:

Figura 7.10 Ventana de Tareas de DetailsView.

Seleccione la opción Elegir origen de datos y <Nuevo origen de datos…>,


para visualizar la siguiente figura:

184
Figura 7.11 Ventana tipo origen de datos.

Seleccione el objeto Base de datos y cambie el identificador para el origen de


datos SqlDataSource1 por datos y pulse el botón Aceptar, para ver la siguiente figura:

Figura 7.12 Ventana Elegir la conexión de datos.

185
Pulse el botón Nueva Conexión, se visualizará la ventana de Agregar
conexión:

Figura 7.13 Ventana Agregar conexión.

En la ventana que se visualiza elija como origen de datos Microsoft SQL


Server y la base de datos bdlibrovbnet y pulse Aceptar. Se visualizará la siguiente
figura:

Figura 7.14 Ventana con la base de datos seleccionada.

186
Pulse el botón Siguiente> para visualizar el siguiente mensaje:

Figura 7.15 Ventana configuración de origen de datos.

Cambie el nombre de la conexión bdlibrovbnetConnectionString1 por


conexion y pulse el botón Siguiente para ver la ventana para configurar la instrucción
Select.

Figura 7.16 Ventana para configurar la instrucción Select.

187
En esta ventana se debe seleccionar los datos a mostrar. Una forma es utilizar
instrucciones SQL y la otra es escoger una tabla o vista. Eligiendo la segunda opción
seleccione la tabla cliente y elija * para ver todos los registros de la tabla clientes y
pulse el botón Siguiente para ver la ventana Consulta de prueba.

Figura 7.17 Ventana Consulta de prueba.

Pulsando el botón Consulta de prueba se visualizarán los datos, como se


aprecia en la figura 7.17. Pulse el botón Finalizar para volver al diseño de la página:

Figura 7.18 Ventana de diseño pagina.aspx.

188
 Ejecutar la aplicación Web
Al ejecutarse la aplicación Web, se visualizará en la página Web el primer registro de la
tabla clientes de la base de datos bdlibrovbnet.mdf de SQL Server en el objeto
detalles:

Figura 7.19. Formulario Web con el primer registro de la tabla clientes.

Como se puede apreciar, solamente se puede ver el primer registro de la tabla


clientes. Si se desea ver el resto de los registros vuelva a modo diseño y nuevamente
seleccione el objeto detalles y en la flecha que aparece en el lado superior derecho, dé
clic para visualizar las Tareas de DetailsView y habilite el cuadro de verificación
Habilitar paginación, como se aprecia en la siguiente figura:

Figura 7.20 Objeto detalles con la opción Habilitar paginación.

189
Nuevamente ejecute el sitio Web para visualizar la página Web con la
paginación de registros.

Figura 7.21 Página Web con registros de la tabla clientes y paginación.

En este momento puede moverse entre los registros de la tabla clientes


seleccionando el valor numérico que desee. También es posible obtener una apariencia
más agradable para visualizar los datos en el objeto detalles. Otra vez en modo de
diseño seleccione el objeto detalles y en la ventana Tareas de DetailsView seleccione
la opción Formato automático para ver la ventana Autoformato.

Figura 7.22 Ventana para cambio de formato del DetailsView.

190
Si selecciona el esquema Pizarra y se pulse el botón Aceptar, se obtendrá en
modo diseño la siguiente figura:

Figura 7.23 Objeto DetailsView con formato Pizarra.

Al ejecutarse nuevamente el sitio Web, se aprecia la siguiente figura:

Figura 7.24 Página Web con el objeto DetailsView con formato Pizarra.

191
7.1.4 Página Web con desplazamiento de registros

Crear un sitio Web llamado WebListViewDataPager y realizar un programa que


permita visualizar los registros de la tabla clientes de la base de datos
bdlibrovbnet.mdf de SQL Server en un control ListView. El usuario deberá poder
desplazarse cada cinco registros de la tabla utilizando los botones: Primero, Siguiente,
Anterior y Último.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en la página Web en la posición deseada: 1 ListView.

Figura 7.25 Interfaz de usuario (WebListViewDataPager).

192
 Establecer las propiedades de los objetos de la interfaz de usuario
Establezca las siguientes modificaciones a los controles:

Tabla 7.4 Propiedades de controles del sitio WebListViewDataPager.


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

Control Propiedad Valor


ListView1 id lista
Form1 id formulario
Document title Desplazamiento de registros con un
ListView.
Default.aspx.vb Nombre de pagina.aspx.vb
archivo.

 Establecer la conexión

Seleccione el objeto ListView llamado lista y en la flecha que aparece en el lado


superior derecho, dé clic en el mouse para visualizar las Tareas de ListView:

Figura 7.26 Ventana de las Tareas de ListView.

Seleccione la opción Elegir origen de datos y <Nuevo origen de datos…>,


para visualizar la siguiente figura:

Figura 7.27 Ventana tipo origen de datos.

193
Seleccione el objeto Base de datos y cambie el identificador para el origen de
datos SqlDataSource1 por datos y pulse el botón Aceptar, para ver la siguiente figura:

Figura 7.28 Ventana elegir la conexión de datos.

194
Pulse el botón Nueva Conexión, se visualizará la ventana Agregar conexión:

Figura 7.29 Ventana Agregar conexión.

En la ventana que se visualiza elija como origen de datos Microsoft SQL


Server y la base de datos bdlibrovbnet y pulse Aceptar. Se visualizará la siguiente
figura:
Figura 7.30 Ventana con la base de datos seleccionada.

195
Pulse el botón Siguiente> para visualizar la ventana de configuración de origen
de datos:

Figura 7.31 Ventana configuración de origen de datos.

Cambie el nombre de la conexión bdlibrovbnetConnectionString1 por


conexion y pulse el botón Siguiente para ver la ventana para configurar la instrucción
Select.

Figura 7.32 Ventana para configurar la instrucción Select.

196
En esta ventana se debe seleccionar los datos a mostrar. Una forma es utilizar
instrucciones SQL y la otra es escoger una tabla o vista. Eligiendo la segunda opción
seleccione la tabla cliente y elija * para ver todos los registros de la tabla clientes y
pulse el botón Siguiente para ver la ventana Consulta de prueba.

Figura 7.33 Ventana Consulta de prueba.

Pulsando el botón Consulta de prueba se visualizarán los datos, como se


aprecia en la figura 7.33. Pulse el botón Finalizar para volver al diseño de la página:

197
Figura 7.34 Ventana de diseño control ListView.

Ahora seleccione la opción Configurar ListView en la ventana Tareas de


ListView.

Figura 7.35. Ventana para seleccionar la opción Configurar ListView.

Al pulsar la opción se visualizará la ventana de diseño del ListView, escoja


como diseño cuadrícula, como estilo Multicolor y seleccione Habilitar paginación,
se obtendría la siguiente figura:

Figura 7.36 Configurar el tipo de diseño, el estilo y habilitar la paginación.

A
l pulsar el botón Aceptar, nuevamente se regresa a modo diseño de la página, como se
muestra en la figura:

198
Figura 7.37 Modo diseño del sitio WebListViewDataPager.

Seleccione la pestaña Dividir y busque la etiqueta asp:DataPager y adicione la


propiedad PageSize con un valor igual a cinco (5), como se muestra en la figura:

Figura 7.38 Código del objeto DataPager del sitio WebListViewDataPager.

 Ejecutar sitio Web

199
Al ejecutarse el sitio Web, se visualizará la página con los cinco primeros registros de la
tabla clientes, como también, los botones de desplazamiento.

Figura 7.39 Página con un ListView y botones de desplazamiento.

Si la tabla contiene más de cinco registros se activarán los botones Siguiente,


Última. El usuario podrá pulsar el botón Siguiente y se desplazará a los próximos cinco
registros de la tabla. Pulsando los diferentes botones se podrá desplazar por todos los
registros que contenga la tabla.

Figura 7.40 Página con los siguientes cinco registros.

7.1.5 Página Web para insertar registros en una tabla

Crear un sitio Web llamado InsertarDatosWeb y diseñar un programa que permita


insertar registros en una tabla utilizando el control DetailsView. Además se deben poder
visualizar en una cuadrícula los registros de dicha tabla.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en la página Web en la posición deseada: 2 Label, 1 DetailsView,
1 DataGridView.
Figura 7.41 Interfaz de usuario (InsertarDatosWeb).

200
 Establecer las propiedades de los objetos de la interfaz de usuario

Establezca las siguientes modificaciones a los controles:

Tabla 7.5 Propiedades de controles del sitio InsertarDatosWeb.

Control Propiedad Valor


Label1 ID titulo
Text Insertar un registro en la tabla Clientes
Font - Bold true
Label2 ID titulotabla
Text Registros de la tabla Clientes.
Font - Bold true
DetailsView1 ID detalles
GridView1 ID tabla
Form1 ID formulario
Document title Insertar un registro en una tabla.
Default.aspx.vb Nombre de pagina.aspx.vb
archivo.

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

201
Figura 7.42 Interfaz de usuario modificada (InsertarDatosWeb).

 Establecer la conexión

Seleccione el objeto DetailsView llamado detalles y en la flecha que aparece en el lado


superior derecho, dé clic en el mouse para visualizar las Tareas de DetailsView:

Figura 7.43 Ventana de las Tareas de DetailsView.

202
Seleccione la opción Elegir origen de datos y <Nuevo origen de datos…>,
para visualizar la siguiente figura:

Figura 7.44 Ventana tipo origen de datos.

Seleccione el objeto Base de datos y cambie el identificador para el origen de


datos SqlDataSource1 por datos y pulse el botón Aceptar, para ver la siguiente figura:

Figura 7.45 Ventana elegir la conexión de datos.

203
Pulse el botón Nueva Conexión, se visualizará la ventana Agregar conexión:

Figura 7.46 Ventana Agregar conexión.

En la ventana que se visualiza elija como origen de datos Microsoft SQL


Server y la base de datos bdlibrovbnet y pulse Aceptar. Se visualizará la siguiente
figura:

Figura 7.47 Ventana con la base de datos seleccionada.

204
Pulse el botón Siguiente> para visualizar la ventana de configuración de origen
de datos:

Figura 7.48 Ventana configuración de origen de datos.

Cambie el nombre de la conexión bdlibrovbnetConnectionString1 por


conexion y pulse el botón Siguiente para ver la ventana para configurar la instrucción
Select.

Figura 7.49 Ventana para configurar la instrucción Select.

205
Seleccione la tabla clientes y elija * para ver todos los registros de la tabla
clientes. Además pulse el botón Avanzadas para ver la ventana de opciones de
generación de consultas SQL avanzadas.

Figura 7.50 Ventana Consulta de prueba.

Habilite las opciones Generar instrucciones Insert, Update y Delete, Usar


concurrencia optimista y pulse el botón Aceptar para ver nuevamente la ventana de
configurar origen de datos - datos.

Figura 7.51 Configurar origen de datos - Consulta de prueba.

206
Pulse el botón Finalizar para volver al diseño de la página:

Figura 7.52 Ventana diseño del sitio Web InsertardatosWeb.

Habilite la opción Habilitar inserción en la ventana de Tareas de DetailsView.


Se observará la siguiente figura:

Figura 7.53 DetailsView con la opción Habilitar inserción habilitada.

Ahora seleccione el objeto tabla y en las Tareas de GridView en la opción


elegir origen de datos escoja el objeto datos para visualizar la siguiente figura:

207
Figura 7.54 Objeto tabla con el objeto datos como origen de datos.

 Ejecutar el sitio Web

Al ejecutarse el sitio Web, se visualizará la página con los objetos DetailsView y


GridView. En el objeto DetailsView se muestra el primer registro de la tabla clientes y
en el objeto GridView se visualizan todos los registros de dicha tabla.

Figura 7.55 Página Web con los objetos DetailsView y GridView.

208
Al pulsarse el link Nuevo los campos de texto del objeto detalles quedarán en
blanco y se observarán dos nuevos link Insertar y Cancelar, como se aprecia en la
figura.

Figura 7.56 Página Web para insertar registros.

Escriba en cada campo la información que se muestra en la figura 7.57.

Figura 7.57 Página Web con la información a insertar.

209
Al pulsarse el link Insertar se guardarán los datos en la tabla clientes y
nuevamente se mostrará el primer registro y el link Nuevo, además se visualizará en el
objeto tabla el nuevo registro.

Figura 7.58 Página Web con el registro insertado.

7.1.6 Pagina Web para eliminar registros de una tabla

Crear un sitio Web llamado EliminarRegistrosWeb y diseñar un programa que permita


eliminar un determinado registro de la tabla clientes. El registro lo deberá escoger el
usuario por medio de la paginación de registros.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en la página Web en la posición deseada: 2 Label, 1 DetailsView,
1 DataGridView.

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


Establezca las siguientes modificaciones a los controles:

210
Tabla 7.6 Propiedades de controles del sitio EliminarRegistrosWeb.
Control Propiedad Valor
Label1 ID titulo
Text Eliminar un registro en la tabla Clientes
Font - Bold true
Label2 ID titulotabla
Text Registros de la tabla Clientes.
Font - Bold true
DetailsView1 ID detalles
GridView1 ID tabla
Form1 ID formulario
Document title Eliminar un registro en una tabla.
Default.aspx.vb Nombre de pagina.aspx.vb
archivo.

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

Figura 7.59 Interfaz de usuario (EliminarRegistrosWeb).

 Establecer la conexión

Seleccione el objeto DetailsView llamado detalles y en la flecha que aparece en el lado


superior derecho, dé clic en el mouse para visualizar las Tareas de DetailsView.
Realice la elección del origen de datos y los pasos subsiguientes según el ejercicio
anterior (desde la figura 7.43 hasta la 7.51), obtendrá como resultado final la siguiente
figura:

211
Figura 7.60 Ventana de diseño de sitio Web EliminarRegistrosWeb.

Habilite las opciones Habilitar paginación, Habilitar eliminación en la


ventana de Tareas de DetailsView. Se observará la siguiente figura:

Figura 7.61 Opciones Habilitar paginación y Habilitar eliminación habilitadas.

Ahora seleccione el objeto tabla y en las Tareas de GridView en la opción


elegir origen de datos escoja el objeto datos para visualizar la siguiente figura:

212
Figura 7.62 Objeto tabla con el objeto datos como origen de datos.

 Ejecutar el sitio Web


Al ejecutarse el sitio Web, se visualizará la página con los objetos DetailsView y
GridView. En el objeto DetailsView se muestra el primer registro de la tabla clientes y
en el objeto GridView se visualizan los registros de dicha tabla.

Figura 7.63 Página Web con los objetos DetailsView y GridView.

Busque el registro que se insertó en el ejemplo anterior utilizando los link


numéricos. Se visualiza la siguiente figura.

213
Figura 7.64 Página Web para eliminar registros.

Al pulsarse el link Eliminar se borrará de la tabla el registro seleccionado en la


tabla clientes y nuevamente se mostrará el primer registro, además se visualizará en el
objeto tabla los registros actuales.

Figura 7.65 Página Web con el registro eliminado.

214
7.1.7 Página Web para modificar registros

Crear un sitio Web llamado ModificarRegistrosWeb y diseñar un programa que


permita modificar un determinado registro de la tabla clientes. El registro lo deberá
escoger el usuario utilizando la paginación de registros.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en la página Web en la posición deseada: 2 Label, 1 DetailsView,
1 DataGridView.

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


Establezca las siguientes modificaciones a los controles:

Tabla 7.7 Propiedades de controles del sitio ModificarRegistrosWeb.


Control Propiedad Valor
Label1 ID titulo
Text Modificar un registro en la tabla Clientes
Font - Bold true
Label2 ID titulotabla
Text Registros de la tabla Clientes.
Font - Bold true
DetailsView1 ID detalles
GridView1 ID tabla
Form1 ID formulario
Document title Modificar un registro en una tabla.
Default.aspx.vb Nombre de pagina.aspx.vb
archivo.

La interfaz de usuario queda como muestra la siguiente figura:

Figura 7.66 Interfaz de usuario (ModificarRegistrosWeb).

215
 Establecer la conexión

Seleccione el objeto DetailsView llamado detalles y en la flecha que aparece en el lado


superior derecho, dé clic en el mouse para visualizar las Tareas de DetailsView.
Realice la elección del origen de datos y los pasos subsiguientes según el ejercicio 7.1.5
Página Web para insertar registros (desde la figura 7.43 hasta la 7.51), obtendrá
como resultado final la siguiente figura:

Figura 7.67 Ventana diseño sitio Web ModificarRegistrosWeb.

Habilite las opciones Habilitar paginación, Habilitar edición en la ventana de


Tareas de DetailsView. Se observará la siguiente figura:

Figura 7.68 Opciones Habilitar paginación y Habilitar edición habilitadas.

216
Ahora seleccione la opción Editar campos del objeto detalles para visualizar la
siguiente figura:

Figura 7.69 Ventana Campos del objeto detalles.

En la ventana Campos seleccionados seleccione los objetos Editar, Actualizar,


Cancelar y en las Propiedades de CommandField en Apariencia en la propiedad
ButtonType cambie Link por Button y pulse el botón Aceptar, para visualizar la
siguiente figura:

Figura 7.70 Objeto detalles con botón Editar.

Ahora seleccione el objeto tabla y en las Tareas de GridView en la opción


elegir origen de datos escoja el objeto datos para visualizar la siguiente figura:

217
Figura 7.71 Objeto tabla con el objeto datos como origen de datos.

 Ejecutar el sitio Web

Al ejecutarse el sitio Web, se visualizará la página con los objetos DetailsView y


GridView. En el objeto DetailsView se muestra el primer registro de la tabla clientes y
en el objeto GridView se visualizan los registros de dicha tabla.

Figura 7.72 Página Web con los objetos DetailsView y GridView.

218
Por ejemplo, si se desea modificar el primer registro de la tabla pulse el botón
Editar para que las cajas de texto queden en modo de edición y se visualicen los
botones Actualizar y Cancelar.

Figura 7.73 Página Web para modificar un registro.

Al realizar en el campo empresa el cambio Canasticos Bacanos por Canasticos


Cheveres y pulsar el botón Actualizar se modificará el registro seleccionado en la tabla
clientes, además se visualizará en el objeto tabla los registros actuales.

Figura 7.74 Página Web con el registro modificado.

219
7.1.8 Página Web con un informe de los registros de una tabla

Crear un sitio Web llamado ReporteTablaWeb y diseñar un programa que permita


visualizar el reporte de los registros de una tabla.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en la página: 1 MicrosoftReportViewer.

Figura 7.75 Interfaz de usuario (ReporteTablaWeb).

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

Establezca las siguientes modificaciones a los controles:

Tabla 7.8 Propiedades de controles del sitio ReporteTablaWeb.

Control Propiedad Valor


MicrosoftReportViewer ID reporte
Form1 ID formulario
Document title Reporte web de una tabla.
Default.aspx.vb Nombre de pagina.aspx.vb
archivo.

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

220
Figura 7.76 Interfaz de usuario modificada (ReporteTablaWeb).

 Diseñar el informe y establecer la conexión con la base de datos

Para seleccionar la tabla y diseñar el informe, pulse la flecha del lado superior derecho
del objeto reporte para ver la ventana Tareas de ReportViewer y escoger la opción
Elegir informe.

Figura 7.77 Selección Tareas de ReportViewer – Elegir informe.

Seleccione <Informe de Servidor>, para visualizar la siguiente figura:

221
Figura 7.78 Elegir informe – Informe servidor.

Aquí seleccione la opción Diseñar nuevo informe, se visualizará el asistente de


informes.

Figura 7.79 Asistente para informes.

Dé clic en Siguiente> para ver la ventana del asistente para la configuración de


orígenes de datos.

222
Figura 7.80 Ventana Elegir la conexión de datos.

Dé clic en el botón Nueva Conexión. En la ventana que se visualiza elija como


origen de datos Microsoft SQL Server y la base de datos bdlibrovbnet.

Figura 7.81 Ventana Agregar conexión.

Al pulsar el botón Aceptar se visualizará nuevamente la ventana de elección de


conexión de datos con la base de datos bdlibrovbnett.mdf, como se aprecia en la
siguiente figura:

223
Figura 7.82 Ventana con la base de datos seleccionada.

| Pulse Siguiente> para visualizar el siguiente mensaje:

Figura 7.83 Ventana Microsoft Visual Studio.

Pulse el botón Sí para copiar el archivo de datos en la carpeta en donde guardó el


sitio Web y visualizará la ventana de guardar cadena de conexión:

Figura 7.84 Ventana Guardar cadena de conexión.

224
Cambie el nombre de la conexión que allí aparece por conexion y pulse el botón
Siguiente>, se visualizará la siguiente figura:

Figura 7.85 Ventana de elección de objetos de la base de datos.

Pulse el signo (+) al lado de Tablas para desplegar las tablas de la base de datos
y seleccione la tabla clientes. Por otro lado, cambie el nombre del DataSet que allí
aparece por conjuntodedatos y pulse el botón Finalizar, para visualizar la figura:

Figura 7.86 Asistente para informes – seleccionar el origen de datos.

Pulse los signos (+) para desplegar la tabla. Dé clic en Siguiente> para

225
visualizar la ventana de selección de tipo de informe.

Figura 7.87 Asistente para informes – seleccionar el tipo de informe.

Seleccione la opción Tabular o Matriz y dé clic en Siguiente> para visualizar


la ventana de diseño de tabla.

Figura 7.88 Asistente para informes – diseñar la tabla.

226
Seleccione el campo nit y pulse el boton Grupos, el resto de campos páselos a
la ventana Detalles con el botón Detalles>, se obtiene la siguiente figura:

Figura 7.89. Diseño de la tabla con los campos seleccionados.

Dé clic en Siguiente> para visualizar la ventana de elección de diseño de la


tabla.

Figura 7.90 Asistente para informes – elegir el diseño de la tabla.

227
Seleccione la opción Escalonado o Bloquear y dé clic en Siguiente> para
visualizar la ventana de estilo de la tabla.

Figura 7.91 Asistente para informes – elegir el estilo de tabla.

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.

Figura 7.92 Ventana de finalización del asistente de informes.

228
Donde aparece el nombre del informe cámbielo por Reporte Web Tabla
Clientes y dé clic en Finalizar> para visualizar el diseño final del informe.

Figura 7.93 Ventana de diseño reporte Web.

Seleccione nuevamente la página aspx, pulse la flecha del objeto reporte y


escoja la opción elegir informe.

Figura 7.94 Ventana para elegir informe.

Seleccione el informe Reporte Web Tabla Clientes.rdlc, se visualizará la


siguiente figura:

229
Figura 7.95 Ventana con el informe Reporte Web Tabla Clientes.

 Ejecutar el sitio Web

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 7.96 Pagina Web con el informe de los registros de la tabla clientes.

230
7.2 Ejercicios de bases de datos con ASP.NET

1. Crear un sitio Web que permita eliminar todos los registros de una tabla cuyos
nombres de empresa contengan la letra M.
2. Hacer un sitio Web que permita visualizar los registros de una tabla de una base
de datos de SQL Server en un control DataList.
3. Realizar un sitio Web que permita visualizar los registros de una tabla de una
base de datos de SQL Server en un control Repeater.
4. Elaborar un sitio Web que permita ejecutar instrucciones SQL en un campo de
texto y visualizar los resultados en un objeto GridView.
5. Diseñar un sitio Web que permita actualizar un campo numérico de una tabla de
una base de SQL Server.
6. Crear un sitio Web que permita importar todos los datos que existan en un
archivo de Excel y visualizarlos en un control FormView.
7. Hacer un sitio Web que permita mostrar los registros de una tabla de una base de
datos cuyo nombre de ciudad empiecen con CA.
8. Realizar un sitio web que permita la creación de reporte por un rango
determinado.
9. Hacer un sitio Web que permita visualizar en un control DataList los registros de
una tabla de Access.
10. Diseñar un sitio Web que permita visualizar en un reporte los registros de una
tabla ordenados alfabéticamente.

231
8. MANEJO DE TABLAS RELACIONADAS CON ASP.NET

Como se vio en el Capítulo 5 es posible obtener una relación entre las tablas
pertecenientes a una base de datos. Para que la relación entre tablas se cumpla, como
minimo dos tablas deben tener en común un campo. Una de las tablas tendrá como llave
primaria el campo común y ésta se llamará tabla principal, la otra tabla no necesita que
el campo común sea llave primaria, a ésta se le llamará tabla secundaria.

También con sitios Web ASP.NET se puede realizar el desplazamiento entre los
registros de las tablas relacionadas, como las operaciones de inserción, modificación,
consulta y eliminación, así como la generación de informes.

8.1 Ejemplos de relación entre tablas de una base de datos con ASP.NET

8.1.1 Relación de dos tablas con DropDownList y GridView

Crear un sitio Web llamado RelacionDosTablasWeb, que permita a un usuario


seleccionar el nombre de una empresa desde un control desplegable y en una cuadrícula
se visualicen los pedidos que dicha empresa ha realizado.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario Web en la posición deseada: 3 Label, 1
DropDownList, 1 GridView.

Figura 8.1. Interfaz de usuario (RelacionDosTablasWeb)

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


Establezca las siguientes modificaciones a los controles:

232
Tabla 8.1 Propiedades de controles del sitio Web RelacionDosTablasWeb.

Control Propiedad Valor


Label1 ID titulo
Text Relación de tablas con un
DropDownList y un GridView.
Font - Bold true
Label2 ID txtempresas
Text Seleccione empresa:
Label3 ID txtpedidos
Text Registros relacionados.
DropDownList1 ID listaempresas
GridView1 ID tabla
Form1 ID formulario
Document title Relación de tablas.
Default.aspx.vb Nombre de pagina.aspx.vb
archivo.

Figura 8.2 Interfaz de usuario modificada (RelacionDosTablasWeb).

 Establecer la conexión

Seleccione el objeto DropDownList llamado listaempresas y en la flecha que aparece


en el lado superior derecho, dé clic en el mouse para visualizar las Tareas de
DropDownList.

233
Figura 8.3 Ventana de las Tareas del DropDownList.

Seleccione la opción Elegir origen de datos, para visualizar la siguiente figura:

Figura 8.4 Ventana para configuración de orígenes de datos.

En la opción Seleccionar un origen de datos escoja <Nuevo origen de datos…>


y pulse el botón Aceptar, para ver la ventana de elección de tipo de origen de datos.

234
Figura 8.5 Ventana para elegir tipo de origen de datos.

Seleccione el objeto Base de datos y cambie el identificador para el origen de


datos SqlDataSource1 por datos y pulse el botón Aceptar, para ver la siguiente figura:

Figura 8.6 Ventana elegir la conexión de datos.

235
Pulse el botón Nueva Conexión, se visualizará la ventana Agregar conexión:

Figura 8.7 Ventana Agregar conexión.

En la ventana que se visualiza elija como origen de datos Microsoft SQL


Server y la base de datos bdlibrovbnet y pulse Aceptar. Se visualizará la siguiente
figura:

Figura 8.8 Ventana con la base de datos seleccionada.

236
Pulse el botón Siguiente> para visualizar la ventana de configuración de origen
de datos – datos:

Figura 8.9 Ventana configuración de origen de datos - datos.

Cambie el nombre de la conexión bdlibrovbnetConnectionString1 por


conexion y pulse el botón Siguiente para ver la ventana para configurar la instrucción
Select.

Figura 8.10 Ventana para configurar la instrucción Select.

237
Seleccione la tabla clientes y elija * para ver todos los registros de la tabla
clientes y pulse el botón Siguiente para ver la ventana de Consulta de prueba.

Figura 8.11 Ventana de Consulta de prueba.

Pulse el botón Finalizar para volver a la ventana de elegir un origen de datos.


Cambie en la opción seleccionar un campo de datos para mostrar en DropDownList nit
por empresa. Se observará la siguiente figura:

Figura 8.12 Ventana de datos a mostrar en el DropDownList.

238
Pulse el botón Aceptar para volver a modo diseño.

Figura 8.13 Ventana modo diseño del sitio Web RelacionDosTablasWeb.

Habilite la opción Habilitar AutoPostBack (hace un llamado al servidor para


devolver los datos seleccionados) en la ventana Tareas de DropDownList. Además
seleccione el objeto tabla. Se observará la siguiente figura:

Figura 8.14 Objeto tabla seleccionado.

En Tareas de GridView en la opción elegir origen de datos escoja <Nuevo


origen de datos…> para visualizar la siguiente figura:

239
Figura 8.15 Ventana elección tipo de origen de datos (objeto tabla).

Seleccione el objeto Base de datos y cambie el identificador para el origen de


datos SqlDataSource1 por datospedidos y pulse el botón Aceptar, para ver la
siguiente figura:

Figura 8.16 Ventana elegir la conexión de datos.

240
Dé clic en la flecha y escoja el objeto llamado conexion. Se observará la
siguiente figura:

Figura 8.17 Ventana Elegir conexión de datos con el objeto conexion.

Pulse el botón Siguiente para ver la ventana para configurar la instrucción


Select.

Figura 8.18 Ventana para configurar la instrucción Select.

241
Seleccione la tabla pedidos y elija * para ver todos los registros de la tabla
pedidos. La ventana sería similar a la siguiente figura:

Figura 8.19 Ventana con la tabla pedidos seleccionada.

Pulse el botón WHERE para visualizar la ventana Agregar cláusula WHERE.

Figura 8.20 Ventana Agregar cláusula WHERE.

242
Seleccione en la ventana Columna el campo nit, en la ventana Operador el
signo igual (=), en la ventana Origen la opción Control, en la ventana Id. de control
seleccione el objeto listaempresas y pulse el botón Agregar para ver la siguiente
figura:

Figura 8.21 Ventana con la cláusula WHERE agregada.

Pulse el botón Aceptar para volver a la ventana Configurar origen de datos –


datospedidos.

Figura 8.22 Ventana Configurar origen de datos – datospedidos.

243
Pulse el botón Siguiente para ver la ventana Consulta de prueba.

Figura 8.23 Ventana Consulta de prueba.

Si desea realizar una prueba pulse el botón Consulta de prueba para ver la
ventana de Editor de valores del parámetro.

Figura 8.24 Ventana Editor de valores del parámetro.

244
En el campo de texto Valor escriba un valor de un nit que se encuentre en la
tabla clientes (100 para nuestro caso) y pulse el botón Aceptar para ver todos los
registros relacionados con la tabla pedidos. Si existe relación se observaría la siguiente
figura:

Figura 8.25 Ventana Consulta de prueba (relación clientes – pedidos).

Pulse el botón Finalizar para volver a modo diseño del sitio Web.

Figura 8.26. Ventana de diseño sitio Web RelacionDosTablasWeb.

 Ejecutar el sitio Web

Al ejecutarse el sitio Web, se observan en la página los objetos DropDownList y

245
GridView. En el objeto DropDownList se puede seleccionar un nombre de una
empresa de la tabla clientes y en el objeto GridView se visualizarán los registros
relacionados con la tabla pedidos.

Figura 8.27 Página Web con la relación clientes - pedidos.

8.1.2 Relación de tablas utilizando GridView y FormView

Diseñar un sitio Web llamado RelacionGridViewFormViewWeb, que permita a un


usuario seleccionar de un control GridView un registro de la tabla clientes y visualizar
en un control FormView todos los registros relacionados con la tabla pedidos de la
base de datos bdlibrovbnet.mdf.

 Crear la interfaz de usuario


Utilizando el cuadro de herramientas haga clic en el control específico y ubique los
siguientes controles en el formulario en la posición deseada: 3 Label, 1 GridView, 1
FormView.

Figura 8.28. Interfaz de usuario (RelacionGridViewFormViewWeb)

246
 Establecer las propiedades de los objetos de la interfaz de usuario
Establezca las siguientes modificaciones a los controles:

Tabla 8.2 Propiedades de controles sitio Web RelacionGridViewFormViewWeb.

Control Propiedad Valor


Label1 ID titulo
Text Relación de tablas con GridView
y FormView.
Font - Bold true
Label2 ID txttabla
Text Seleccione Clientes
Label3 ID txtforma
Text Pedidos relacionados con el
Cliente.
FormView1 ID forma
GridView1 ID tabla
Form1 ID formulario
Document title Relación con GridView y
FormView.
Default.aspx.vb Nombre de pagina.aspx.vb
archivo.

Figura 8.29 Interfaz de usuario modificada (RelacionGridViewFormViewWeb).

 Establecer la conexión
Seleccione el objeto GridView llamado tabla y en la flecha que aparece en el lado
superior derecho, dé clic en el mouse para visualizar las Tareas de GridView.

247
Figura 8.30 Ventana de las Tareas del GridView.

Seleccione la opción Elegir origen de datos, para visualizar la siguiente figura:

Figura 8.31 Ventana para elegir tipo de origen de datos.

Seleccione el objeto Base de datos y cambie el identificador para el origen de


datos SqlDataSource1 por datosclientes y pulse el botón Aceptar, para ver la siguiente
figura:

248
Figura 8.32 Ventana elegir la conexión de datos.

Pulse el botón Nueva Conexión, se visualizará la ventana Agregar conexión:

Figura 8.33 Ventana Agregar conexión.

En la ventana que se visualiza elija como origen de datos Microsoft SQL


Server y la base de datos bdlibrovbnet y pulse Aceptar. Se visualizará la siguiente
figura:

249
Figura 8.34 Ventana con la base de datos seleccionada.

Pulse el botón Siguiente> para visualizar la ventana de configuración de origen


de datos – datosclientes:

Figura 8.35 Ventana configuración de origen de datos - datos.

Cambie el nombre de la conexión bdlibrovbnetConnectionString1 por


conexion y pulse el botón Siguiente para ver la ventana para configurar la instrucción
Select.

250
Figura 8.36 Ventana para configurar la instrucción Select.

Seleccione la tabla clientes y elija * para ver todos los registros de la tabla
clientes y pulse el botón Siguiente para ver la ventana Consulta de prueba.

Figura 8.37 Ventana de Consulta de prueba.

Pulse el botón Finalizar para volver a modo diseño.

251
Figura 8.38 Ventana modo diseño del sitio Web RelacionGridViewFormViewWeb.

Habilite la opción Habilitar selección en la ventana Tareas de GridView.


Además seleccione el objeto forma. Se observará la siguiente figura:

Figura 8.39 Objeto forma seleccionado.

En Tareas de FormView en la opción elegir origen de datos escoja <Nuevo


origen de datos…> para visualizar la siguiente figura:

252
Figura 8.40 Ventana elección tipo de origen de datos (objeto forma).

Seleccione el objeto Base de datos y cambie el identificador para el origen de


datos SqlDataSource1 por datospedidos y pulse el botón Aceptar, para ver la
siguiente figura:

Figura 8.41 Ventana Elegir la conexión de datos.

253
Dé clic en la flecha y escoja el objeto llamado conexion. Se observará la
siguiente figura:

Figura 8.42 Ventana Elegir conexión de datos con el objeto conexion.

Pulse el botón Siguiente para ver la ventana para configurar la instrucción


Select.

Figura 8.43 Ventana para configurar la instrucción Select.

Seleccione la tabla pedidos y elija * para ver todos los registros de la tabla
pedidos. La ventana sería similar a la siguiente figura:

254
Figura 8.44 Ventana con la tabla pedidos seleccionada.

Pulse el botón WHERE para visualizar la ventana Agregar cláusula WHERE.

Figura 8.45 Ventana Agregar cláusula WHERE.

Seleccione en la ventana Columna el campo nit, en la ventana Operador el


signo igual (=), en la ventana Origen la opción Control, en la ventana Id. de control
seleccione el objeto tabla y pulse el botón Agregar para ver la siguiente figura:

255
Figura 8.46 Ventana con la cláusula WHERE agregada.

Pulse el botón Aceptar para volver a la ventana Configurar origen de datos –


datospedidos.

Figura 8.47 Ventana Configurar origen de datos – datospedidos.

Pulse el botón Siguiente para ver la ventana Consulta de prueba.

256
Figura 8.48 Ventana Consulta de prueba.

Pulse el botón Finalizar para volver a modo diseño del sitio Web. Habilite la
opción Habilitar paginación en la ventana Tareas de FormView. Se observará la
siguiente figura:

Figura 8.49 Ventana de diseño sitio Web RelacionGridViewFormViewWeb.

Además en Tareas de FormView escoja Formato Automático…, seleccione el


esquema profesional para visualizar la siguiente figura:

257
Figura 8.50 Ventana de Autoformato.

Pulse el botón Aceptar para volver a modo diseño.

 Ejecutar el sitio Web


Al ejecutarse el sitio Web, se observa en la página el objeto GridView. En dicho objeto
se visualizan los registros de la tabla clientes.

Figura 8.51 Página Web con la cuadrícula de clientes.

Si pulsa sobre el link Seleccionar al frente del nit 100, se visualizarán los
registros relacionados con la tabla pedidos en el objeto forma.

258
Figura 8.52 Página Web con registros relacionados clientes - pedidos.

Si desea que la presentación de los registros relacionados sea más profesional,


vuelva a modo de diseño y seleccione el objeto forma y visualice las Tareas de
FormView, como se muestra en la siguiente figura:

Figura 8.53 Página Web con el objeto forma seleccionado.

Seleccione la opción Editar plantillas. Se observará la siguiente figura:

259
Figura 8.54 Objeto forma en modo de edición de plantillas.

Modifique cada una de las etiquetas del objeto forma y pulse la opción
Terminar edición de plantillas. Según los cambios realizados, la página podría quedar
de la siguiente forma:

Figura 8.55 Objeto forma en las plantillas modificadas.

Al volver a ejecutar el sitio Web y seleccionar el nit 100, se observará la


siguiente figura:

260
Figura 8.56 Página Web con la relación clientes – pedidos.

8.1.3 Página Web con tres tablas relacionadas

Diseñar un sitio Web llamado RelacionTresTablasWeb, que permita a un usuario


seleccionar de un control DropDownList el nombre de una empresa de la tabla clientes
y mostrar en una cuadrícula los registros relacionados con la tabla pedidos. Al
seleccionar algún registro de la cuadrícula de pedidos se debe visualizar en otra
cuadrícula la venta realizada en dicho pedido.

 Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control específico y ubique los


siguientes controles en el formulario en la posición deseada: 3 Label, 1 GridView, 1
FormView.

Figura 8.57 Interfaz de usuario (RelacionTresTablasWeb).

261
 Establecer las propiedades de los objetos de la interfaz de usuario
Establezca las siguientes modificaciones a los controles:

Tabla 8.3 Propiedades de controles sitio Web RelacionTresTablasWeb.

Control Propiedad Valor


Label1 ID titulo
Text Relación de tres tablas con
ListView y dos GridView.
Font - Bold true
Label2 ID txtempresa
Text Seleccione empresa
Label3 ID txtpedidos
Text Relación Clientes - Pedidos.
Label4 ID txtventas
Text Relación Pedidos - Ventas.
ListBox1 ID listaempresas
GridView1 ID tablapedidos
GridView2 ID tablaventas
Form1 ID formulario
Document title Relación de tres tablas.
Default.aspx.vb Nombre de pagina.aspx.vb
archivo.

Figura 8.58 Interfaz de usuario modificada (RelacionTresTablasWeb).

 Establecer la conexión

Seleccione el objeto ListView llamado listaempresas y en la flecha que aparece en el


lado superior derecho, dé clic en el mouse para visualizar las Tareas de Listbox.

262
Figura 8.59 Ventana de las Tareas del ListBox.

Seleccione la opción Elegir origen de datos, para visualizar la siguiente figura:

Figura 8.60 Ventana para configuración de orígenes de datos.

En la opción Seleccionar un origen de datos escoja <Nuevo origen de datos…>


y pulse el botón Aceptar, para ver la ventana de elección de tipo de origen de datos.

263
Figura 8.61 Ventana para elegir tipo de origen de datos.

Seleccione el objeto Base de datos y cambie el identificador para el origen de


datos por datosclientes y pulse el botón Aceptar, para ver la siguiente figura:

Figura 8.62 Ventana elegir la conexión de datos.

Pulse el botón Nueva Conexión, se visualizará la ventana Agregar conexión:

264
Figura 8.63 Ventana Agregar conexión.

En la ventana que se visualiza elija como origen de datos Microsoft SQL


Server y la base de datos bdlibrovbnet y pulse Aceptar. Se visualizará la siguiente
figura:

Figura 8.64 Ventana con la base de datos seleccionada.

Pulse el botón Siguiente> para visualizar la ventana de configuración de origen


de datos – datosclientes:

265
Figura 8.65 Ventana configuración de origen de datos - datosclientes.

Cambie el nombre de la conexión bdlibrovbnetConnectionString1 por


conexion y pulse el botón Siguiente para ver la ventana para configurar la instrucción
Select.

Figura 8.66 Ventana para configurar la instrucción Select- datosclientes.

Seleccione la tabla clientes y elija * para ver todos los registros de la tabla
clientes y pulse el botón Siguiente para ver la ventana Consulta de prueba.

266
Figura 8.67 Ventana Consulta de prueba.

Pulse el botón Finalizar para volver a la ventana de elegir un origen de datos.


Cambie en la opción seleccionar un campo de datos para mostrar en ListBox nit por
empresa. Se observará la siguiente figura:

Figura 8.68 Ventana de datos a mostrar en el ListBox.

Pulse el botón Aceptar para volver a modo diseño.

267
Figura 8.69 Ventana modo diseño del sitio Web RelacionTresTablasWeb.

Habilite la opción Habilitar AutoPostBack en la ventana Tareas de ListBox.


Además seleccione el objeto tablapedidos. Se observará la siguiente figura:

Figura 8.70 Objeto tablapedidos seleccionado.

Seleccione la opción Elegir origen de datos, para visualizar la siguiente figura:

268
Figura 8.71 Ventana para elegir tipo de origen de datos.

Seleccione el objeto Base de datos y cambie el identificador para el origen de


datos por datospedidos y pulse el botón Aceptar, para ver la siguiente figura:

Figura 8.72 Ventana Elegir la conexión de datos.

Dé clic en la flecha y escoja el objeto llamado conexion. Se observará la


ventana de configurar la instrucción Select.

269
Figura 8.73 Ventana para configurar la instrucción Select.

Seleccione la tabla pedidos y elija * para ver todos los registros de la tabla
pedidos y pulse el botón WHERE para visualizar la ventana Agregar cláusula
WHERE.

Figura 8.74 Ventana Agregar cláusula WHERE.

Seleccione en la ventana Columna el campo nit, en la ventana Operador el


signo igual (=), en la ventana Origen la opción Control, en la ventana Id. de control
seleccione el objeto listaempresas y pulse el botón Agregar para ver la siguiente
figura:

270
Figura 8.75 Ventana con la cláusula WHERE agregada.

Pulse el botón Aceptar para volver a la ventana Configurar origen de datos –


datospedidos.

Figura 8.76 Ventana Configurar origen de datos – datospedidos.

Pulse el botón Siguiente para ver la ventana Consulta de prueba.

271
Figura 8.77 Ventana Consulta de prueba.

Pulse el botón Finalizar para volver a modo diseño del sitio Web. Habilite la
opción Habilitar selección en la ventana Tareas de GridView. Se observará la
siguiente figura:

Figura 8.78 Ventana de diseño sitio Web RelacionTresTablasWeb.

Ahora seleccione el objeto tablaventas. Se observará la siguiente figura:

272
Figura 8.79 Objeto tablaventas seleccionado.

En Tareas de GridView en la opción elegir origen de datos escoja <Nuevo


origen de datos…> para visualizar la siguiente figura:

Figura 8.80 Ventana de elección de tipo de origen de datos (objeto tablaventas).

Seleccione el objeto Base de datos y cambie el identificador para el origen de


datos por datosventas y pulse el botón Aceptar, para ver la siguiente figura:

273
Figura 8.81 Ventana Elegir la conexión de datos - datosventas.

Dé clic en la flecha y escoja el objeto llamado conexion. Pulse el botón


Siguiente para observar la ventana de configurar la instrucción Select.

Figura 8.82 Ventana para configurar la instrucción Select - datosventas.

Pulse el botón WHERE para visualizar la ventana Agregar cláusula WHERE.

274
Figura 8.83 Ventana Agregar cláusula WHERE.

Seleccione en la ventana Columna el campo nit, en la ventana Operador el


signo igual (=), en la ventana Origen la opción Control, en la ventana Id. de control
seleccione el objeto tablapedidos y pulse el botón Agregar para ver la siguiente figura:

Figura 8.84 Ventana con la cláusula WHERE agregada.

Pulse el botón Aceptar para volver a la ventana Configurar origen de datos –


datosventas.

275
Figura 8.85 Ventana Configurar origen de datos – datosventas.

Pulse el botón Siguiente para ver la ventana Consulta de prueba.

Figura 8.86 Ventana Consulta de prueba - datosventas.

Pulse el botón Finalizar para volver a modo diseño del sitio Web. Se observará
la siguiente figura:

276
Figura 8.87 Ventana de diseño de sitio Web RelacionTresTablasWeb.

 Ejecutar el sitio Web


Al ejecutarse el sitio Web, se observa en la página el objeto ListBox. En dicho objeto se
visualizan las empresas de la tabla clientes.

Figura 8.88 Página Web con la lista de empresas de la tabla clientes.

Si pulsa sobre el nombre de empresa Canasticos Cheveres, se visualizarán en el


objeto tablapedidos los pedidos 10 y 20 que se encuentran relacionados con la tabla
clientes. Al escoger el link Seleccionar al frente del número de pedido 20, se
visualizarán en el objeto tablaventas los registros relacionados con la tabla pedidos.

277
Figura 8.89 Página Web con registros relacionados clientes – pedidos - ventas.

8.2 Ejercicios relación de tablas con ASP.NET

1. Crear un sitio Web que permita realizar una relación entre tres tablas de una base
de datos en SQL Server utilizando controles GridView.
2. Hacer un sitio Web que permita realizar una relación de tres tablas; para la
primera relación se deben seleccionar los datos desde un ListBox y visualizarlos
en un GridView. Desde éste se debe seleccionar un registro y mostrar los
registros de la segunda relación en un DataList.
3. Diseñar un sitio Web que permita visualizar en un reporte los registros
relacionados de dos tablas cuyos nit sean mayores que 500.
4. Elaborar un sitio Web que permita visualizar un reporte de los registros
relacionados cuyas empresas empiecen por las letras PO.
5. Realizar un sitio Web que permita mostrar en un ListBox los registros
relacionados de dos tablas.
6. Crear un sitio Web que permita importar todos los datos relacionados que
existan en un FormView a un archivo de Excel.
7. Hacer un sitio Web que permita mostrar los datos relacionados de dos tablas de
una base de datos por un rango determinado en la tabla principal.
8. Elaborar un sitio Web que permita la creación de un reporte con dos tablas
relacionadas.
9. Hacer un sitio Web que permita visualizar en un control DataList los registros
relacionados de dos tablas de Access.
10. Diseñar un sitio Web que permita visualizar un reporte según un rango
seleccionado.

278
ANEXO A

CREACIÓN DE APLICACIONES WINDOWS FORMS

Este tutorial se trabaja con el entorno de desarrollo de Microsoft Visual Studio .NET
2008, también llamado entorno de desarrollo integrado (Integrated Development
Environment, IDE). Este entorno es personalizable y contiene todas las herramientas
para construir programas para Microsoft Windows.

Figura A.1 Página de Inicio de Visual Studio 2008.

A.1 Crear un nuevo proyecto Visual Basic .NET (Windows Forms)

Crear una aplicación Windows Forms en Visual Basic .NET, requiere 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 iniciar un nuevo proyecto desde la página de inicio, se pueden seguir estos
pasos:

 En la ventana proyectos recientes seleccionar la opción Crear: link Proyecto…

 Hacer clic en la opción Archivo del menú y seleccionar Nuevo Proyecto...

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


siguiente ventana:
279
Figura A.2 Ventana Nuevo proyecto Windows Form.

A.2 Elegir plantilla de aplicaciones

Visual Studio .NET ofrece varias plantillas de aplicaciones para soportar el desarrollo
de diferentes tipos de aplicaciones y componentes. Antes de iniciar un nuevo proyecto,
se debe escoger el tipo de plantilla que se va a utilizar. Una plantilla de 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.

Para el ejemplo, como Tipo de proyecto se debe seleccionar Visual Basic -


Windows, como plantilla Aplicación de Windows Forms, como Nombre del proyecto
MiProgramaWF. Pulse el botón Aceptar para visualizar el entorno de desarrollo del
proyecto Windows Forms MiProgramaWF.

Figura A.3 Ventana Nuevo proyecto Windows Form.

280
Cuando se selecciona una plantilla de aplicaciones aparece el entorno de
desarrollo, donde encontrará:

 Menú principal y la barra de herramientas estándar: Proporcionan acceso a


la mayoría de comandos que controlan el entorno de programación de Visual
Studio .NET. Los comandos del menú principal funcionan igual que en todas
las aplicaciones basadas en Windows. La barra de herramientas proporciona los
iconos que sirven como acceso a la mayoría de comandos estándar de Windows.
También contiene iconos que permiten abrir el explorador de soluciones, la
ventana de propiedades, el cuadro de herramientas y otros elementos
importantes del entorno de desarrollo.

Figura A.4 Menú principal y barra de herramientas estándar.

Menú Principal

Barra de Herramientas

 Cuadro de Herramientas: El cuadro de herramientas contiene diversos


controles que se pueden utilizar para añadir ilustraciones, etiquetas, botones,
cuadros de lista, barras de desplazamiento, menús y formas geométricas a una
interfaz de usuario. Cada control que se añade a un formulario se convierte en un
objeto de la interfaz de usuario programable en la aplicación. Estos objetos son
visibles para los usuarios cuando la aplicación se ejecuta y funcionan como los
objetos estándar de cualquier aplicación basada en Windows.

Figura A.5 Cuadro de Herramientas.

281
 Diseñador formulario Windows (Windows Forms): Cuando se inicia un
proyecto en Visual Basic .NET, el Diseñador de formulario de Windows
(Windows Forms) se abre en la vista diseño (un formulario tiene vista diseño
cuando se inicia el proyecto y está en modo de ejecución cuando se ejecuta la
aplicación), mostrándose el formulario Form1 del proyecto. En dicho
formulario se pueden ubicar los controles u objetos necesarios para la aplicación
arrastrándolos desde el cuadro de herramientas para crear la interfaz de usuario.
El formulario predeterminado contiene los elementos mínimos utilizados por la
mayoría de formularios: una barra de título, un cuadro de control y los botones
minimizar, maximizar y cerrar.

Figura A.6 Formulario Windows.

 Explorador de soluciones: permite visualizar archivos y realizar tareas de


administración de archivos en una solución o en un proyecto. Una solución es un
contenedor para proyectos y elementos de solución que pueden incluirse en una
aplicación. Normalmente, una solución contiene uno o más proyectos
relacionados. Un proyecto es un contenedor dentro de una solución que se utiliza
para administrar, generar y depurar lógicamente los elementos del (los) proyecto
(s) que constituyen la aplicación.

Figura A.7 Ventana Explorador de soluciones.

282
 Ventana de propiedades: muestra una lista de las propiedades que facilitan la
configuración de los valores o propiedades del control seleccionado y se pueden
modificar mientras se crea o se edita la aplicación. Una propiedad describe una
característica de un objeto, como el tamaño, título, color, etc.

Figura A.8 Cuadro de propiedades.

 Ventana de depuración de errores: muestra una lista de los errores que se


generan al realizar modificaciones a los controles o al ejecutar la aplicación.

Figura A.9 Ventana de lista de errores.

A.3 Crear la interfaz de usuario

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. Como ejemplo
se creará un programa que permita a un usuario digitar un número y al pulsar un botón
se muestre en una cuadrícula la tabla de multiplicación de dicho número. Para este caso
se diseñará la interfaz de usuario utilizando los siguientes controles: 3 Label, 1
TextBox, 1 Button y 1 DataGridView.
Cuando existen varios controles del mismo tipo, éstos se numeran en el mismo
orden en que son colocados (nombre del control más numero del consecutivo). La
interfaz de usuario del ejemplo será como muestra la figura a continuación.

283
Figura A.10 Prepantalla de la interfaz de usuario.

A.4 Establecer las propiedades de los controles

Después de colocar los controles u objetos a un formulario, 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 y se
cambia su configuración en la ventana Propiedades. Para el caso del ejemplo
establezca las siguientes modificaciones en la propiedad correspondiente a cada uno de
los siguientes controles:
Tabla A.1 Propiedades de los controles de la aplicación MiProgramaWF.

Control Propiedad Valor


Label1 Name titulo
Text Generar una tabla de
multiplicar:
Font - Bold True
Label2 Name txtnumero
Text Digite numero:
Label3 Name txttabla
Text La tabla del numero
TextBox1 name camponumero
Text En blanco
DataGridView1 Name tabla
Button1 Name boton
Text Ver Tabla
Form1 Name formulario
Text Tablas de multiplicar

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


cada control queda como muestra la siguiente figura:

284
Figura A.11 Pantalla final de la interfaz de usuario

A.5 Escribir código

Una vez se hayan establecido las propiedades iniciales del formulario y sus objetos, se
puede agregar el código que se ejecutará en respuesta a un evento específico 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 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.

Figura A.12 Editor de código del objeto boton.

Ahora escriba el siguiente código entre Private Sub y End Sub:

With tabla
.Columns.Add("Multiplicando", " Multiplicando ")
.Columns.Add("Multiplicador", " Multiplicador ")
.Columns.Add("Producto", "Producto")
.RowCount = 10
For i As Integer = 0 To .RowCount - 1
.Item(0, i).Value = camponumero.Text
.Item(1, i).Value = i + 1
.Item(2, i).Value = (camponumero.Text * (i + 1))
Next
End With

285
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 número 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 i+1, en la tercera columna el producto de
multiplicar el valor del objeto camponumero por i+1.

A.6 Guardar la aplicación

Una vez finalizada la creación de la aplicación, se debe guardar 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:

 En el menú Archivo, haga clic en Guardar todo.


 O hacer clic en el icono de la barra de herramientas.

Cualquier opción visualizará la siguiente ventana:

Figura A.13 Ventana Guardar proyecto.

Se debe seleccionar la ubicación en donde se guardará el proyecto. Al pulsar el


botón Guardar se creará una carpeta con el mismo nombre del proyecto. Dentro de
dicha carpeta se crean los archivos:

1. Un archivo de proyecto .vbproj, el cual contiene información específica para una


determinada tarea de programación.
2. Un archivo de solución .sln, el cual contiene información relacionada con uno o más
proyectos. Siempre elija el archivo solución para abrir un proyecto.

A.7 Ejecutar la aplicación Windows Forms

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


realizar lo siguiente:
1. Haga clic en el botón Iniciar de la barra de herramientas estándar. También puede
presionar F5 para ejecutar el proyecto. Si la aplicación se ejecuta sin errores,
aparecerá una versión ejecutable del formulario.
2. Cuando termine de ejecutar la aplicación se debe cerrar el formulario para regresar al
entorno de programación.

286
Las aplicaciones Windows Forms creadas con Visual Basic .NET tienen la
extensión .exe, que podrán ser ejecutadas en cualquier equipo que tenga instalado
Microsoft Windows. Visual Basic .NET instala de manera automática los archivos de
soporte, incluyendo las bibliotecas de vínculos dinámicos y archivos de .NET
framework. Visual Studio puede crear dos tipos de archivos ejecutables:

1. Debug: Compilación de depuración, se utiliza cuando se prueba y depura un programa


(Default).
2. Release: Versión de edición, se utiliza cuando se termina el programa siendo ésta una
versión optimizada de menor tamaño

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.

Figura A.14 Aplicación MiProgramaWF ejecutado.

A.8 Cerrar y abrir un proyecto

Para cerrar el proyecto MiProgramaWF o cualquier otro proyecto, en modo diseño se


pueden realizar los siguientes pasos:

1. En el menú Archivo, hacer clic en la opción Cerrar Proyecto.


2. Si desea cerrar el proyecto y salir de Visual Studio, en el menú Archivo haga clic en la
opción Salir.
En cada caso se deben guardar los nuevos cambios que se hayan realizado.

Para volver a abrir la aplicación MiProgramaWF o cualquier otra aplicación


existente se deberán realizar los siguientes pasos:

1. Abrir Visual Studio .NET.


2. Si en la pantalla inicial de Visual Studio .NET se visualiza el nombre del proyecto que
se desea abrir haga doble clic para abrir la aplicación. Si por el contrario no se visualiza
la aplicación en el menú Archivo, seleccione Abrir proyecto..., busque la carpeta
MiProgramaWF y seleccione el archivo MiPrograma.sln y pulse la opción Abrir para
abrir la aplicación en el entorno de desarrollo de Visual Basic .NET.

287
ANEXO B

Creación de aplicaciones Web ASP.NET

Este tutorial se trabaja con el entorno de desarrollo de Microsoft Visual Studio .NET
2008.

ASP.NET es un entorno de programación que se ejecuta en un servidor Web


para generar y administrar páginas Web. Visual Studio 2008 proporcionar el diseñador
de formularios Web, un editor, controles y un sistema de depuración, para facilitar la
creación de aplicaciones que guardadas en un servidor pueden ser accesadas desde un
explorador, teléfonos móviles, etc.

Figura B.1 Página de Inicio de Visual Studio 2008.

B.1 Crear un nuevo Sitio Web (ASP.NET)

Crear una aplicación Web ASP.NET utilizando el lenguaje de programación Visual


Basic .NET requiere unos pasos muy sencillos como son: iniciar un nuevo sitio Web,
crear la interfaz del usuario, establecer las propiedades de los objetos, escribir el código
y ejecutar el sitio Web.

Como ejemplo se creará un sitio Web que permita a un usuario escoger un tipo
de comida rápida y una bebida en un restaurante y visualizar el valor a pagar por dicho
pedido. Se debe discriminar el valor antes del Impuesto al Valor Agregado ( IVA, 16%)
y el valor total a pagar.

288
Para iniciar un nuevo sitio desde la página de inicio, se pueden seguir estos pasos:

 En la ventana proyectos recientes seleccionar la opción Crear: link Sitio Web…

 Hacer clic en la opción Archivo del menú y seleccionar Nuevo sitio Web...

Cuando se crea un sitio Web por cualquier de las dos opciones se visualiza la
siguiente ventana:

Figura B.2 Ventana Nuevo sitio Web ASP.NET.

B.2 Elegir plantilla de aplicaciones

Una plantilla de aplicación Web proporciona archivos de inicio y una estructura del sitio
Web, además contiene los objetos básicos del sitio y la configuración del entorno que se
necesita para crear el tipo de aplicación que se desea.

Para el ejemplo, como plantilla seleccione Sitio Web ASP.NET, como


Ubicación del sitio escoja Sistema de archivos (también es posible obtener una
ubicación HTTP o FTP), con el botón Examinar puede buscar la carpeta para ubicar el
sitio Web, para este caso guarde el sitio con el nombre MiProgramaWeb. Pulse el
botón Aceptar para visualizar el entorno de desarrollo del sitio Web MiProgramaWeb.

289
Figura B.3 Ventana Nuevo sitio Web.

Cuando se selecciona una plantilla de aplicaciones aparece el formulario Web en


el entorno de desarrollo, donde encontrará:

 Menú principal y la barra de herramientas estándar: proporcionan acceso a


la mayoría de comandos que controlan el entorno de programación de Visual
Studio .NET. Los comandos del menú principal funcionan igual que en todas
las aplicaciones basadas en Windows. La barra de herramientas proporciona los
iconos que sirven como acceso a la mayoría de comandos estándar de Windows.
También contiene iconos que permiten abrir el explorador de soluciones, la
ventana de propiedades, el cuadro de herramientas y otros elementos
importantes del entorno de desarrollo.

Figura B.4 Menú principal y barra de herramientas estándar.

Menú Principal

Barra de Herramientas

 Cuadro de Herramientas: el cuadro de herramientas contiene controles


estándar de Windows, datos, navegación, elementos Web, etc. Cada control que
se añade a un formulario Web se convierte en un objeto de la interfaz de usuario
programable en la aplicación.

290
Figura B.5 Cuadro de Herramientas.

 Diseñador de formularios Web: cuando se inicia un sitio Web el diseñador de


formularios de Web se abre en vista Diseño (un formulario tiene vista diseño
cundo se inicia el sitio y está en modo de ejecución cuando se ejecuta la
aplicación), mostrándose el formulario Web Default.aspx. En la parte inferior
del formulario Web se encuentran las pestañas Diseño, Dividir (divide el
formulario Web en dos partes: una en modo diseño y en la otra mitad se
visualiza el código HTML del formulario Web), Código (muestra el código
HTML), como también las pestañas <html>, <body>, <form#form1>, <div>.
En dicho formulario Web se pueden ubicar los controles u objetos necesarios
para la aplicación arrastrándolos desde el cuadro de herramientas para crear la
interfaz de usuario.

Figura B.6 Formulario Web.

291
 Explorador de soluciones: permite visualizar las carpetas y archivos que se
han creado. Si observa en la carpeta en donde guardó el sitio Web se creó la
carpeta App_Data y los archivos Default.aspx, Default.aspx.vb (este archivo
contiene el código fuente que da soporte a la página Default.aspx) y Web.xml
(archivo de configuración xml).

Figura B.7 Ventana Explorador de soluciones.

 Ventana de propiedades: muestra una lista de las propiedades que facilitan la


configuración de los valores o propiedades del control seleccionado y se pueden
modificar mientras se crea o se edita la aplicación. Una propiedad describe una
característica de un objeto, como el tamaño, título, color, etc.

Figura B.8 Cuadro de propiedades.

292
 Ventana de depuración de errores: muestra una lista de los errores que se
generan al realizar modificaciones a los controles o al ejecutar la aplicación.

Figura B.9 Ventana de lista de errores.

B.3 Crear la interfaz de usuario

Para crear la interfaz de usuario del sitio Web, en primer lugar se deben ubicar los
controles necesarios en el formulario Web desde el cuadro de herramientas. Para el
ejemplo se diseñará la interfaz de usuario utilizando los siguientes controles: 8 Label, 5
TextBox, 1 ListBox y 4 RadioButton.
Cuando existen varios controles del mismo tipo, éstos se numeran en el mismo
orden en que son colocados (nombre del control más número del consecutivo). La
interfaz de usuario del ejemplo será como muestra la figura a continuación.

Figura B.10 Preformulario Web de la interfaz de usuario.

293
B.4 Establecer las propiedades de los controles.

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 B.1 Propiedades de los controles del sitio Web MiProgramaWeb.

Control Propiedad Valor


Label1 ID titulo
Text Comidas Rápidas topo Gigio.
Font - Bold True
Label2 ID txtcomida
Text Seleccione comida:
Font - Bold True
Label3 ID txtbebida
Text Seleccione bebida:
Font - Bold True
Label4 ID txtvalorcomida
Text Valor Comida:
Font - Bold True
Label5 ID txtvalorbebida
Text Valor Bebida:
Font - Bold True
Label6 ID txtsubtotal
Text Subtotal:
Font - Bold True
Label7 ID txtiva
Text I.V.A.:
Font - Bold True
Label8 ID txttotal
Text Total a Pagar:
Font - Bold True
TextBox1 ID valorcomida
Text En blanco
TextBox2 ID valorbebida
Text En blanco
TextBox3 ID subtotal
Text En blanco
TextBox4 ID iva
Text En blanco
TextBox5 ID total
Text En blanco
ListBox1 ID listacomida
AutoPostBack true
RadioButton1 ID botongaseosa
Text Gaseosa
AutoPostBack true
GroupName bebidas
RadioButton2 ID botonjugo
Text Jugo
AutoPostBack true
GroupName bebidas

294
RadioButton3 ID botonlimonada
Text Limonada
AutoPostBack true

RadioButton4 ID botoncerveza
Text Cerveza
AutoPostBack true
GroupName bebidas
Form1 ID formulario
Document Title Comidas Rápidas
Default.aspx Nombre del archivo Pagina.aspx

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


cada control queda como se muestra en la siguiente figura:

Figura B.11 Formulario Web final de la interfaz de usuario.

B.5 Escribir código

Una vez se hayan establecido las propiedades iníciales del formulario Web y sus
objetos, se puede agregar el código que se ejecutará en respuesta a un evento específico
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.

a) Seleccione el control ListBox llamado listacomidas, en la ventana de propiedades


busque la propiedad Items, al frente de Colección pulse en los tres puntos (…) para
ver la ventana Editor de la colección ListItem:

295
Figura B.12 Formulario Web con el control ListBox seleccionado.

Pulse el botón Agregar del Editor de la colección ListItem, busque la propiedad


Text y cámbie el texto por Hamburguesa. Realice los mismos pasos para agregar los
textos: Pizza, Perro caliente, Choriarepa. Por último pulse el botón Aceptar.

Figura B.13 Agregación de nombres al control ListBox.

b) Dé doble clic en el objeto ListBox llamado listacomidas, para abrir el editor del
procedimiento listacomida_SelectedIndexChanged y escriba el siguiente código:

If listacomida.SelectedIndex = 0 Then
valorcomida.Text = "5000"
End If

296
If listacomida.SelectedIndex = 1 Then
valorcomida.Text = "3000"
End If
If listacomida.SelectedIndex = 2 Then
valorcomida.Text = "4000"
End If
If listacomida.SelectedIndex = 3 Then
valorcomida.Text = "3500"
End If
subtotal.Text = Val(valorcomida.Text) + Val(valorbebida.Text)
iva.Text = Val(subtotal.Text) * 0.16
total.Text = Val(subtotal.Text) + Val(iva.Text)

En el anterior código se utiliza la estructura de control if para determinar qué


posición del objeto listacomidas se ha pulsado utilizando la propiedad SelectedIndex.
Dependiendo del index seleccionado se le asignará al objeto valorcomida el valor
correspondiente. Por último se le asigná los valores de las operaciones correspondientes
a los objetos subtotal, iva, total por intermedio de su propiedad Text. Se utiliza la
función Val () para convertir una cadena de caracteres a entero (recuerde que los objetos
TextBox capturan texto).

c) Dé doble clic en el objeto RadioButton llamado botongaseosa, para abrir el editor


del procedimiento botongaseosa_CheckedChanged y escriba el siguiente código:

If botongaseosa.Checked Then
valorbebida.Text = "1500"
End If
subtotal.Text = Val(valorcomida.Text) + Val(valorbebida.Text)
iva.Text = Val(subtotal.Text) * 0.16
total.Text = Val(subtotal.Text) + Val(iva.Text)

d) Dé doble clic en el objeto RadioButton llamado botonjugo, para abrir el editor del
procedimiento botonjugo_CheckedChanged y escriba el siguiente código:

If botonjugo.Checked Then
valorbebida.Text = "2000"
End If
subtotal.Text = Val(valorcomida.Text) + Val(valorbebida.Text)
iva.Text = Val(subtotal.Text) * 0.16
total.Text = Val(subtotal.Text) + Val(iva.Text)

e) Dé doble clic en el objeto RadioButton llamado botonlimonada, para abrir el


editor del procedimiento botonlimonada_CheckedChanged y escriba el siguiente
código:

If botonlimonada.Checked Then
valorbebida.Text = "1800"
End If
subtotal.Text = Val(valorcomida.Text) + Val(valorbebida.Text)
iva.Text = Val(subtotal.Text) * 0.16
total.Text = Val(subtotal.Text) + Val(iva.Text)

f) Dé doble clic en el objeto RadioButton llamado botoncerveza, para abrir el editor


del procedimiento botoncerveza_CheckedChanged y escriba el siguiente código:

297
If botoncerveza.Checked Then
valorbebida.Text = "2500"
End If
subtotal.Text = Val(valorcomida.Text) + Val(valorbebida.Text)
iva.Text = Val(subtotal.Text) * 0.16
total.Text = Val(subtotal.Text) + Val(iva.Text)

En los anteriores códigos se utiliza la estructura de control if para determinar que


objeto RadioButton se selecciona utilizando la propiedad Checked. Dependiendo del
control seleccionado se le asignará al objeto valorbebida el valor correspondiente.
También se actualizan los objetos subtotal, iva y total.

B.6 Ejecutar la aplicación Web

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


realizar lo siguiente:
1. Haga clic en el botón Iniciar depuración de la barra de herramientas estándar.
También puede presionar Ctrl+F5 para ejecutar el sitio Web. Otra forma es la opción
Iniciar depuración del menú Depurar.
2. Cuando termine de ejecutar la aplicación se debe cerrar el formulario Web para
regresar al entorno de programación.

Figura B.14 Ventana de ejecución de sitio Web MiProgramaWeb.

Cuando se ejecuta el sitio Web se visualizará la ventana de Depuración no


habilitada. Si se ejecuta Modificar el archivo Web.config para habilitar la
depuración se mostrará la página Web en el explorador seleccionado y esta ventana no
se volverá a mostrar al ejecutarse nuevamente el sitio Web; por el contrario, si se
selecciona Ejecutar sin depuración se mostrará inicialmente una página Web en
blanco, la cual deberá cerrar para visualizar el sitio Web ejecutado (cada vez que se
ejecute esta opción se visualizará la ventana de Depuración no habilitada). Seleccione la
primera opción para ver la siguiente figura.

298
Figura B.15 Sitio Web MiProgramaWeb ejecutado.

Al seleccionar como comida Hamburguesa y como bebida Limonada, se


visualiza la siguiente figura:

Figura B.16 Sitio Web con comida y bebida seleccionados.

299
B.7 Cerrar y abrir un sitio Web

Para cerrar el sitio Web MiProgramaWeb o cualquier otro sitio web, estando en modo
diseño se pueden realizar los siguientes pasos:

3. En el menú Archivo, hacer clic en la opción Cerrar Proyecto.


4. Si desea cerrar el sitio Web y salir de Visual Studio, en el menú Archivo haga clic en
la opción Salir.
En cada caso se deben guardar los nuevos cambios que se hayan realizado.

Para volver a abrir la aplicación MiProgramaWeb o cualquier otra aplicación


existente se deberán realizar los siguientes pasos:

1. Abrir Visual Studio .NET.


2. Si en la pantalla inicial de Visual Studio .NET se visualiza el nombre del sitio Web que
se desea abrir haga doble clic para abrir la aplicación. Si por el contrario, no se
visualiza la aplicación en el menú Archivo, seleccione Abrir sitio Web..., busque la
carpeta MiProgramaWeb y pulse el botón Abrir para abrir la aplicación Web en el
entorno de desarrollo de Visual Basic .NET.

300
ANEXO C

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.

C.1. Conectarse a SQL Server.

Cuando se instala SQL Server, en los programas existe una opción para conectarse a
dicha base de datos. Seleccione Microsoft SQL Server 2005. Realice los siguientes
pasos:

1. Inicio - > Todos los Programas - > Microsoft SQL Server 2005.
2. SQL Server Management Studio Express.

Figura C.1 Opciones para conectarse a SQL Server.

Al pulsar SQL Server Management Studio Express se visualiza la ventana


Connect to Server.

Figura C.2 Ventana Connect to Server.

Deberá digitar lo siguiente:

1. Server Name: Por omisión aparece el nombre del servidor en 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

301
deberá digitar el User Name y el Password creado cuando se realizó la
instalación de SQL Server.
3. Pulsar el botón Connect.

Se visualizará el entorno de trabajo de Microsoft SQL Server Management


Studio Express.

Figura C.3 Ventana Microsoft SQL Server Management Studio Express.

C.2 Crear una base de datos

En la ventana Object Explorer seleccione la opción Databases y pulse el botón


derecho del mouse para ver las opciones New Databases, Attach, Restore Databases,
Restore File and FilesGroups y Refresh.

Figura C.4 Opciones de DataBases.

Seleccione la opción New DataBase para ver la siguiente ventana:

302
Figura C.5 Ventana para crear una nueva base de datos.

Escriba el nombre de la base de datos en la opción Database name:


(bdlibrovbnet para los ejemplos del libro) y pulse el botón OK para volver a la
ventana de Microsoft SQL Server. Dé doble clic sobre la carpeta Databases para
desplegar las bases de datos existentes, como se aprecia en la siguiente figura:

Figura C.6 Ventana para crear una nueva base de datos.

Dé doble clic sobre el nombre de la base de datos bdlibrovbnet para desplegar


los elementos que fueron creados. Se obtendrá la siguiente figura:

303
Figura C.7 Base de datos bdlibrovbnet con sus elementos creados inicialmente.

C.3 Crear tablas en la base de datos

Para crear tablas en la base de datos seleccione en cualquiera de las dos ventanas la
carpeta Tables y dé clic derecho para visualizar las opciones: New Tables, Filter y
Refresh.

Figura C.8 Opciones de la carpeta Tables.

304
Seleccione New Table para ver la ventana de diseño de la tabla, como se aprecia
en la siguiente figura:

Figura C.9 Ventana de diseño de una tabla.

Para agregar los campos a la tabla en Column Name escriba nit, en Data Type
seleccione nvarchar(50) (campo alfanumérico).

Figura C.10 Ventana con el campo nit creado.

Realice los mismos pasos para crear los campos: empresa, representante,
direccion, telefono, ciudad (todos con el mismo tipo de datos nvarchar(50)). Por
305
último seleccione el campo nit y pulse el icono para crear la clave primaria ( ), la
figura quedará:

Figura C.11 Ventana con los campos de la tabla y nit como llave primaria.

Ahora se debe guardar la tabla, pulse el signo para visualizar la ventana de


cambios.

Figura C.12 Ventana de cambio de una tabla.

Pulse el botón Yes para obtener la ventana para escoger el nombre Choose
Name.

306
Figura C.13 Ventana para escribir el nombre de la tabla creada.

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:

Figura C.14 Estructura tabla pedidos.

Figura C.15 Estructura tabla productos.

307
Figura C.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:

Figura C.17 Estructura de la base de datos.

Cuando se selecciona una tabla y se da clic derecho, se visualiza la ventana con


las diferentes opciones que se pueden realizar como son:

 New Table: para crear una nueva tabla.


 Modify: permite modificar la estructura de una tabla que previamente se había
creado.
 Open Table: para abrir una ventana de edición para insertar o visualizar los
datos de una tabla.
 Script Table as: para crear, borrar, alterar, seleccionar, insertar, actualizar,
ejecutar una consulta, un archivo o una imagen.
 View Dependencies: para visualizar las dependencias (relaciones) de una tabla.
 Rename: para renombrar una tabla.
 Delete: para eliminar una tabla.
 Refresh: para refrescar o actualizar una tabla.
 Properties: para visualizar las propiedades de una tabla.

308
Figura C.18 Opciones para la manipulación de una tabla.

Seleccione la tabla clientes y dé clic derecho y escoja la opción Open Table


para insertar información a la tabla.

Figura C.19 Ventana para insertar datos a la tabla clientes.

Inserte la información de acuerdo con la siguiente figura:

Figura C.20 Ventana con datos insertados en la tabla clientes.

309
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:

Figura C.21 Ventana al seleccionar el icono Show SQL Pane.

Si se escribe la instrucción SQL “Select * from clientes where nit>400” y se


pulsa el icono de verificación de sintaxis de instrucciones SQL (Verify SQL sintax)
se visualizará la siguiente ventana:

Figura C.22 Ventana de verificación de sintaxis SQL.

Al pulsar el botón Aceptar se mostrará la figura:

310
Figura C.23 Ventana al Aceptar la verificación de sintaxis SQL.

Para ejecutar la instrucción SQL de deberá dar clic en el icono (Execute


SQL), se verá la siguiente figura:

Figura C.24 Ventana con la instrucción SQl ejecutada.

Ahora se deberán llenar con datos las tablas pedidos, productos y ventas de
acuerdo con las siguientes figuras:

311
Figura C.25 Tabla pedidos con datos insertados.

Figura C.26 Tabla productos con datos insertados.

Figura C.27 Tabla ventas con datos insertados.

C.4 Crear Diagramas de una base de datos

Para crear un diagrama de una base datos seleccione Database Diagrams de la base de
datos bdlibrovbnet, dé clic derecho y seleccione la opción New Database Diagram.
Para ver la ventana de adición de tablas:

312
Figura C.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:

Figura C.29 Ventana Database Diagram con las tablas adicionadas.

Para crear la relaciones entre las tablas seleccione el campo nit de la tabla
cliente, dé 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.

313
Figura C.30 Ventana Tables and Columns.

En el campo Relationship name escriba el nombre de la relación. Seleccione


como llave primaria (Primary key table) la tabla clientes y el campo nit, como llave
secundaria (Foreign key table) la tabla pedidos y el campo nit. Pulse el botón OK para
visualizar la ventana Foreign Key Relationship.

Figura C.31 Ventana Foreign key Relationship.

En esta ventana se visualizan todas las características de la relación. Pulse el


botón OK para terminar. Realice las demás relaciones hasta obtener la siguiente figura:

314
Fgura C.32 Ventana de diagramas con las relaciones entre tablas.

Ahora se debe guardar el diagrama, pulse el signo para visualizar la ventana


de cambios en un diagrama.

Figura C.33 Ventana de cambios en un diagrama de la base de datos.

Pulse el botón Yes para obtener la ventana para escoger el nombre Choose
Name.

Figura C.34 Ventana para escribir el nombre del diagrama creado.

315
Escriba como nombre del diagrama relaciontablas y pulse el botón OK. Se
visualizará la ventana para guardar los cambios realizados.

Figura C.35 Ventana para guardar los cambios realizados en la base de datos.

Al pulsarse el botón Yes se guardarán los cambios. Seleccionado el diagrama


creado y dar clic derecho se visualizará una ventana donde podrá realizar las siguientes
Tareas: New Database Diagrams (crear un nuevo diagrama), Modify (modificar un
diagrama), Rename (renombrar un diagrama), Delete (eliminar un diagrama), Refresh (
refrescar un diagrama).

Figura C.36 Ventana para manipulación de los diagramas.

C.5 Crear una vista

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:

316
Figura C.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:

Figura C.38 Ventana de la vista con las tablas clientes – pedidos.

Seleccione los campos que desea ver en la vista. Dé clic en el icono


(Execute SQL), para ver la ejecución de la vista:

317
Figura C.39 Ventana de ejecución de la vista creada.

Ahora se debe guardar la vista creada, pulse el signo para visualizar la


ventana de cambios en una vista.

Figura C.40 Ventana de cambios en una vista.

Pulse el botón Yes para obtener la ventana para escoger el nombre Choose
Name.

Figura C.41 Ventana para escribir el nombre de la vista creada.

318
Escriba como nombre de la vista vista_clientes_pedidos y pulse el botón OK.
Se visualizará la siguiente figura:

Figura C.42 Ventana con la vista guardada.

319
ANEXO D

ORACLE DATABASE 10G EXPRESS

D.1 Instalación

De la siguiente dirección:

http://www.oracle.com/technology/software/products/database/xe/index.html

descargue el Oracle Database 10g Express o una versión superior, el cual será un
archivo comprimido llamado OracleXEUniv.rar; una vez hecho esto, dé doble clic en
el siguiente icono:

Figura D.1 Archivo OracleXEUniv comprimido.

Para descomprimir el archivo .rar, dé doble clic sobre éste. Se mostrará la


siguiente ventana:

Figura D.2 Ventana para descomprimir el archivo OracleXEUniv.

En la carpeta en donde se descomprima el archivo debe quedar guardado el


siguiente archivo:

Figura D.3 Archivo ejecutable OracleXEUniv.

320
Al dar doble clic sobre éste, se inicializará el asistente de instalación de Oracle
Database 10g Express, como muestra la siguiente figura:

Figura D.4 Asistente InstallShield.

Al terminar la extracción de los archivos necesarios para la instalación de


ORACLE se visualizará la siguiente ventana:

Figura D.5 Asistente de instalación Oracle Database 10g Express Edition.

Pulse el botón Siguiente> para visualizar la ventana de contrato de licencia:

321
Figura D.6 Ventana del acuerdo de licencia Oracle Database 10g Express Edition.

En esta ventana seleccione la opción “Acepto los términos del acuerdo de


licencia” y pulse el botón Siguiente> para visualizar la ventana de Seleccionar
Ubicación de Destino.

Figura D.7 Ventana de ubicación Oracle Database 10g Express Edition.

En esta pantalla se específica el directorio en el cual desea instalar ORACLE.


Se aconseja que instale el software en el directorio que sugiere por default el instalador
(c:\oraclexe), después pulse el botón Siguiente> para visualizar la ventana Específicar
contraseñas de Bases de Datos.

322
Figura D.8 Ventana de contraseñas Oracle Database 10g Express Edition.

En esta ventana digite la contraseña que considere. Para esta instalación se digitó
la contraseña 123456. Pulse el botón Siguiente> para visualizar la ventana Resumen.

Figura D.9 Ventana Resumen de instalación Oracle Database 10g Express Edition.

Revise cada uno de los valores y pulse el botón Instalar, para visualizar la
ventana de Estado de la Instalación.

323
Figura D.10 Ventana Estado de instalación Oracle Database 10g Express Edition.

Al finalizar el proceso se visualizará la ventana Finalización de la instalación,


donde por default está habilitada la opción Iniciar la pagina inicial de la base de
datos.

Figura D.11 Finalización instalación de Oracle Database 10g Express Edition.

Pulse el botón Terminar para visualizar la pantalla de inicio de ORACLE


Database Express Edition.

Figura D.12 Ventana para conectarse a Oracle Database 10g Express Edition.

324
Para realizar la conexión a la base de datos es necesario digitar el usuario y la
contraseña. Por default el nombre de usuario es system, y la contraseña será aquella que
fue digitada en la ventana Específicar contraseñas de Bases de Datos. La siguiente es
la pantalla de inicio de ORACLE.

Figura D.13 Ventana inicial de Oracle Database 10g Express Edition.

D.2 Creación de una tabla en la base de datos con usuario system

Para crear una tabla en la base de datos es necesario seleccionar el objeto explorador
de objetos y escoger la opción Crear y allí elegir Tablas.

Figura D.14 Ventana con la opción crear tablas en Oracle Database 10g.

325
Para visualizar la siguiente ventana:

Figura D.15 Ventana inicial para crear una tabla en Oracle Database 10g.

Aquí seleccione la opción Crear, la cual está a la derecha en la parte superior de


la ventana, esto con el fin de visualizar la siguiente ventana:

Figura D.16 Ventana selección del objeto Tabla.

Elija la opción Tabla para visualizar la ventana en donde se dará el nombre a la


tabla y se digitarán los campos que contendrá la tabla. En el nombre de la tabla escriba
clientes y los nombres de los campos o nombres de las columnas serán:

326
Figura D.17 Estructura tabla clientes.

Nombre de la columna Tipo


nit Varchar2
representante Varchar2
razonsocial Varchar2
direccion Varchar2
telefono Varchar2
ciudad Varchar2
credito Number

La ventana debería quedar de la siguiente manera:

Figura D.18 Ventana de campos de la tabla clientes.

Al terminar pulse el botón Siguiente> para crear la clave primaria, este paso
visualizará la siguiente ventana:

Figura D.19 Ventana de creación de clave primaria.

327
Aquí en la opción clave primaria seleccione Sin rellenar, el nombre de la
restricción de la clave primaria es colocada por default este caso será CLIENTES_PK,
la clave primaria será NIT (VARCHAR2) y no se debe seleccionar clave primaria
compuesta. Por último pulse el botón Siguiente> para visualizar la ventana de Clave
Ajena.

Figura D.20 Ventana de creación de clave ajena.

Para el ejemplo no se hace necesario crear una clave ajena, por lo tanto pulse el
botón Siguiente> para visualizar la ventana de restricciones.

Figura D.21 Ventana de restricciones de una tabla.

328
Para el ejemplo tampoco se hace necesario crear restricciones a la tabla, por
consiguiente pulse el botón Terminar para visualizar la ventana de Confirmar.

Figura D.22 Ventana de confirmación de creación de una tabla.

Pulse el botón Crear para visualizar la ventana en donde se mostrará el nombre


de la tabla como las respectivas columnas que contiene dicha tabla.

Figura D.23 Ventana con la creación de la tabla.

329
El siguiente paso es insertarle información a la tabla, seleccionando la opción
Datos, se mostrará el mensaje “esta tabla no contiene ningún dato”, ya que hasta el
momento no se le ha ingresado ningún dato.

Figura D.24 Ventana para insertar datos en una tabla.

Para insertar datos seleccione la opción Insertar Fila, la cual mostrará la


siguiente ventana:

Figura D.25 Inserción de datos en una tabla.

330
Aquí rellene con información cada uno de los campos de la tabla. Al terminar de
digitar información en el último campo de la tabla puede seleccionar el botón Crear o
Crear y Crear Otro. El botón Crear y Crear Otro le permitirá guardar el registro
digitado y limpiar los campos para ingresar nueva información en otro registro. El botón
Crear guarda el último registro digitado y visualizará la tabla con la información que
contenga dicha tabla.

Figura D.26 Ventana con los datos insertados en la tabla clientes.

Por último para salir de la base de datos seleccione la opción Desconectarse,


para visualizar la siguiente pantalla:

Figura D.27 Ventana de desconexión de Oracle.

331
ÍNDICE

Add, 110 FileContent, 165


ADO.NET, 52 FileDialog, 20
ALL, 46 FileGet, 29
ALTER, 45, 48 FileGetObject, 29
AND, 46 FileName, 22
Append, 24 FileOpen, 24
AppendText, 11, 15 FilePut, 29
ASP.NET, 162, 175 FilePutObject, 29
AVG, 47 fill, 56, 177, 181
Bases de Datos, 44 FirstDisplayedScrollingRowIndex, 84
BETWEEN, 46 Font - Bold, 179
BindingContext, 81 Framework, 9
catch, 14 FROM, 45
clear, 80 FullRowSelect), 137
close, 14 GetCreateTime, 11
columnas, 44 GROUP, 45
Command, 52 HAVING, 45
Common Language Runtime, 8 HeaderText, 40
comparación, 46 HttpServerUtility, 168
Conectarse a SQL Server, 299 IN, 46
Conexión a Bases de Datos, 52 INNER JOIN, 51
Connection, 52 Input, 24
ContentType, 165 INSERT, 45, 48
Copy, 11 Integrated, 277
COUNT, 47 Integrated Security, 55, 177
Create, 11 java.io, 11, 163
CREATE, 45 Just-In-Time, 9
CREATE DATABASE, 47 La biblioteca de clases base, 8
CreateText, 11 Lenguaje de Consulta Estructurado, 44
Cuadro de Herramientas, 279, 288 LIKE, 46
Data Source, 55, 177 LineInput, 27, 172
DataAdapter, 52 MapPath, 165
Database, 55, 177 MAX, 47
DataMember, 70 Menú principal, 279, 288
Dataset, 52 Microsoft .NET, 8
DataSource, 70, 145 Microsoft Intermediate Language, 8
DataTable, 52 MIN, 47
DataView, 52 Modificar la cadena de conexión:, 66
Default.aspx, 289 Move, 11
DefaultView, 145 movefirst, 84
Delete, 11 movelast, 85
DELETE, 45, 50 movenext, 84
Diseñador formularios Web, 289 moveprevious, 85
DLL, 45 NET, 8
DML, 45 NOT, 46
DROP, 45 OleDataAdapter, 52
DROP DATABASE, 48 OleDbCommand, 52
DROP TABLE, 48 OleDbConnection, 52
El explorador de soluciones, 280, 290 Open, 11
Elegir base de datos, 66 OpenFileDialog, 20
Elegir proveedor base de datos, 66 OpenMode.Binary, 29
EOF, 172 OpenMode.OutPut, 26, 172
Exists, 11 OR, 46
Explorador de servidores, 63 Oracle Database 10g Express, 318
filas, 44 OracleCommand, 52
File, 11 OracleConnection, 52
FileClose, 24 OracleDataAdapter, 52

332
ORDER, 45 StreamReader, 14, 17
Orientada a objetos, 44 StreamWriter, 14, 17
Output, 24 SUM, 47
Persist Security Info, 62 System.Data.OleDb, 58, 62
Position, 81 System.Data.SqlClient, 55, 177, 180
PostedFile, 165 System.IO, 11, 163
Probar la conexión, 66 Try-Catch, 14
Provider, 59 UPDATE, 45, 50
ReadByte, 165 User, 62
readToEnd, 14 ValueMember, 145
Relacionales, 44 Ventana de depuración de errores, 291
Replace, 11 Ventana de propiedades, 290
RowFilter, 145 Visual Basic .NET, 8
SaveFileDialog, 20 Visual Basic.NET, 8
SELECT, 45, 49 WHERE, 45
SelectedItem, 107 Windows Authentication, 299
SelectedValue, 145 Windows Form, 277
SQL Server, 299 Word.Application, 40
SqlCommand, 52 Word.Documents.Add, 40
SqlConnection, 52 write, 14
SqlDataAdapter, 52 writeLine, 15
Stream, 11

333
BIBLIOGRAFÍA

 CEBALLOS, Javier. MICROSOFT VISUAL BASIC .NET LENGUAJE Y


APLICACIONES, Mexico, Editorial Alfaomega Ra-Ma, 2a edición, 2007.
 HARWRYSZKIEWYCZ, I T. ANÁLISIS Y DISEÑO DE BASE DE DATOS,
México, Editorial Megabyte, Noriega Editores. 1994.
 JAMSA, Kris. SUPERUTILIDADES PARA VISUAL BASIC .NE, Madrid,
Editorial Mc Graw Hill, 1a. edición, 2003.

INFOGRAFÍA

 monografias.com/trabajos5/tipbases/tipbases.shtml
 monografias.com/trabajos5/basede/basede.shtml
 inei.gob.pe/cpi/bancopub/libfree/lib607/cap01.htmet.gob.pe
 elizabethpeguero.8m.com/enza.htm
 Learnthenet.com/spanish/glossary/database.htmipyme.org/sie/
 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.microsoft.com/spanish/MSDN/estudiantes/desarrollo/lenguajes/v
studio.mspx
 http://www.programacionfacil.com/java_windows/start
 http://www.bitarray.info/2009/02/ado-net-crear-una-conexion-a-una-base-
de-datos-access-usando-el-asistente/
 http://www.onglasses.net//default.aspx?articuloid=261
 http://www.onglasses.net//default.aspx?articuloid=199
 http://www.onglasses.net//default.aspx?articuloid=291
 http://www.programar.net/directory/default.aspx?fid=3
 http://www.elguille.info/colabora/NET2005/FernandoLuque_MaestroDetalle
Simple.htm
 http://support.microsoft.com/default.aspx?scid=http://www.microsoft.com/in
tlkb/spain/E308/0/56.asp
 http://www.elguille.info/colabora/puntoNET/yosall_datagrid.htm

334

También podría gustarte