libro manejo de archivos visual basic net 2010
-
Author
jhhoonnha-jimeru -
Category
Software
-
view
1.154 -
download
18
Embed Size (px)
description
Transcript of libro manejo de archivos visual basic net 2010

1
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

2

3
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

4
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

5
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

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

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

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

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

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

11
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í.

12
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

13
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 = ""

14
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

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

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

17
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:

18
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

19
\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.

20
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:

21
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:

22
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ó.

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

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

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

26
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

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

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

29
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:

30
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

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

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

33
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:

34
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

35
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).

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

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

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

39
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:

40
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

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

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

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

44
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

45
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.
ALTER Utilizado para modificar las tablas agregando campos o cambiando la definición de los campos.
Comandos DML
SELECT Utilizado para consultar registros de la base de datos que satisfagan un criterio determinado.
INSERT Utilizado para cargar lotes de datos en la base de datos en una única 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.
WHERE Para específicar las condiciones que deben reunir los registros a 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.

46
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
AND Es el "y" lógico. Evalúa dos condiciones y devuelve un valor de verdad sólo si ambas son ciertas.
OR Es el "o" lógico. Evalúa dos condiciones y devuelve un valor de 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.

47
Tabla 2.5 Funciones de agregado SQL.
Función Descripción
AVG Utilizada para calcular el promedio de los valores de un campo determinado.
COUNT Utilizada para devolver el número de registros de la selección.
SUM Utilizada para devolver la suma de todos los valores de un campo determinado.
MAX Utilizada para devolver el valor más alto de un campo específicado.
MIN Utilizada para devolver el valor más bajo de un campo 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)

48
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)

49
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’.

50
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’

51
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

52
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

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

54
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).

55
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

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

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

58
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

59
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

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

61
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).

62
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:

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

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

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

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

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

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

69
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:

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

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

72
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).

73
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).

74
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:

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

76
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:

77
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:

78
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:

79
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:

80
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

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

82
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:

83
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:

84
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()

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

86
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).

87
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:

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

89
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:

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

91
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

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

93
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:

94
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:

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

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

97
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).

98
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

99
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”.

100
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:

101
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:

102
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

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

104
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

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

106
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

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

108
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).

109
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

110
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”.

111
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:

112
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;

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

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

115
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

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

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

118
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

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

120
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).

121
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).

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

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

124
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:

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

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

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

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

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

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

131
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”.

132
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

133
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).

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

135
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).

136
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
Form1
Name formulario
Text Relación de tablas con DataGridView.
Figura 5.5 Interfaz de usuario modificada (RelacionConDataGridView).

137
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

138
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).

139
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
Form1
Name formulario
Text Relación de tablas con un ComboBox.
Figura 5.8 Interfaz de usuario modificada (RelacionConComboBox).

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

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

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

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

144
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:

145
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

146
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:

147
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).

148
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
Form1
Name formulario
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

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

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

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

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

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

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

155
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:

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

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

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

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

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

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

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

163
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

164
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).

165
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é clic derecho sobre la página).
pagina.aspx.vb
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.

166
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:

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

168
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é clic derecho sobre la página).
pagina.aspx.vb

169
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")

170
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).

171
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:

172
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 archivo.
pagina.aspx.vb
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)

173
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:

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

175
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).

176
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).

177
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 archivo.
pagina.aspx.vb
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

178
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

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

180
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 archivo.
pagina.aspx.vb

181
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

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

183
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 archivo.
pagina.aspx.vb
La interfaz de usuario queda como se muestra en la siguiente figura:

184
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:

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

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

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

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

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

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

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

192
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).

193
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 archivo.
pagina.aspx.vb
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.

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

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

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

197
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:

198
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:

199
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

200
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).

201
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 archivo.
pagina.aspx.vb
La interfaz de usuario queda como se muestra en la siguiente figura:

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

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

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

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

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

207
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:

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

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

210
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:

211
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 archivo.
pagina.aspx.vb
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:

212
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:

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

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

215
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 archivo.
pagina.aspx.vb
La interfaz de usuario queda como muestra la siguiente figura:
Figura 7.66 Interfaz de usuario (ModificarRegistrosWeb).

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

217
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:

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

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

220
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 archivo.
pagina.aspx.vb
La interfaz de usuario queda como se muestra en la siguiente figura:

221
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:

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

223
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:

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

225
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

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

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

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

229
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:

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

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

232
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:

233
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 archivo.
pagina.aspx.vb
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.

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

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

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

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

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

239
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:

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

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

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

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

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

245
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

246
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)

247
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 archivo.
pagina.aspx.vb
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.

248
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:

249
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:

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

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

252
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:

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

254
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:

255
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:

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

257
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:

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

259
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:

260
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:

261
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).

262
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 archivo.
pagina.aspx.vb
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.

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

264
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:

265
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:

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

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

268
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:

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

270
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:

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

272
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:

273
Figura 8.79 Objeto tablaventas seleccionado.
E
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:

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

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

276
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:

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

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

279
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:

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

281
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.
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.
Barra de Herramientas
Menú Principal

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

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

284
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:

285
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

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

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

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

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

290
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.
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.
Barra de Herramientas
Menú Principal

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

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

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

294
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

295
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:

296
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

297
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:

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

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

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

301
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

302
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:

303
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:

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

305
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

306
ú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.

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

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

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

310
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:

311
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:

312
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:

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

314
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:

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

316
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:

317
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:

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

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

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

321
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:

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

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

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

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

326
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:

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

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

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

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

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

332
ÍNDICE
Add, 110 ADO.NET, 52 ALL, 46 ALTER, 45, 48 AND, 46 Append, 24 AppendText, 11, 15 ASP.NET, 162, 175 AVG, 47 Bases de Datos, 44 BETWEEN, 46 BindingContext, 81 catch, 14 clear, 80 close, 14 columnas, 44 Command, 52 Common Language Runtime, 8 comparación, 46 Conectarse a SQL Server, 299 Conexión a Bases de Datos, 52 Connection, 52 ContentType, 165 Copy, 11 COUNT, 47 Create, 11 CREATE, 45 CREATE DATABASE, 47 CreateText, 11 Cuadro de Herramientas, 279, 288 Data Source, 55, 177 DataAdapter, 52 Database, 55, 177 DataMember, 70 Dataset, 52 DataSource, 70, 145 DataTable, 52 DataView, 52 Default.aspx, 289 DefaultView, 145 Delete, 11 DELETE, 45, 50 Diseñador formularios Web, 289 DLL, 45 DML, 45 DROP, 45 DROP DATABASE, 48 DROP TABLE, 48 El explorador de soluciones, 280, 290 Elegir base de datos, 66 Elegir proveedor base de datos, 66 EOF, 172 Exists, 11 Explorador de servidores, 63 filas, 44 File, 11 FileClose, 24
FileContent, 165 FileDialog, 20 FileGet, 29 FileGetObject, 29 FileName, 22 FileOpen, 24 FilePut, 29 FilePutObject, 29 fill, 56, 177, 181 FirstDisplayedScrollingRowIndex, 84 Font - Bold, 179 Framework, 9 FROM, 45 FullRowSelect), 137 GetCreateTime, 11 GROUP, 45 HAVING, 45 HeaderText, 40 HttpServerUtility, 168 IN, 46 INNER JOIN, 51 Input, 24 INSERT, 45, 48 Integrated, 277 Integrated Security, 55, 177 java.io, 11, 163 Just-In-Time, 9 La biblioteca de clases base, 8 Lenguaje de Consulta Estructurado, 44 LIKE, 46 LineInput, 27, 172 MapPath, 165 MAX, 47 Menú principal, 279, 288 Microsoft .NET, 8 Microsoft Intermediate Language, 8 MIN, 47 Modificar la cadena de conexión:, 66 Move, 11 movefirst, 84 movelast, 85 movenext, 84 moveprevious, 85 NET, 8 NOT, 46 OleDataAdapter, 52 OleDbCommand, 52 OleDbConnection, 52 Open, 11 OpenFileDialog, 20 OpenMode.Binary, 29 OpenMode.OutPut, 26, 172 OR, 46 Oracle Database 10g Express, 318 OracleCommand, 52 OracleConnection, 52 OracleDataAdapter, 52

333
ORDER, 45 Orientada a objetos, 44 Output, 24 Persist Security Info, 62 Position, 81 PostedFile, 165 Probar la conexión, 66 Provider, 59 ReadByte, 165 readToEnd, 14 Relacionales, 44 Replace, 11 RowFilter, 145 SaveFileDialog, 20 SELECT, 45, 49 SelectedItem, 107 SelectedValue, 145 SQL Server, 299 SqlCommand, 52 SqlConnection, 52 SqlDataAdapter, 52 Stream, 11
StreamReader, 14, 17 StreamWriter, 14, 17 SUM, 47 System.Data.OleDb, 58, 62 System.Data.SqlClient, 55, 177, 180 System.IO, 11, 163 Try-Catch, 14 UPDATE, 45, 50 User, 62 ValueMember, 145 Ventana de depuración de errores, 291 Ventana de propiedades, 290 Visual Basic .NET, 8 Visual Basic.NET, 8 WHERE, 45 Windows Authentication, 299 Windows Form, 277 Word.Application, 40 Word.Documents.Add, 40 write, 14 writeLine, 15

334
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