SlideShare uma empresa Scribd logo
1 de 334
Baixar para ler offline
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.2Clases 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
bindebug 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.7Exportar 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.4Conexió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:bdaccessbdaccesslibrovbnet.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
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01
Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01

Mais conteúdo relacionado

Mais procurados (16)

Manual abies 2
Manual abies 2Manual abies 2
Manual abies 2
 
15225891 Manual De Integracion V10
15225891 Manual De Integracion V1015225891 Manual De Integracion V10
15225891 Manual De Integracion V10
 
Hibernate reference
Hibernate referenceHibernate reference
Hibernate reference
 
Postgres adminss
Postgres adminssPostgres adminss
Postgres adminss
 
Manualdeajax
ManualdeajaxManualdeajax
Manualdeajax
 
My sql query browser
My sql query browserMy sql query browser
My sql query browser
 
Repositorios un ejemplo
Repositorios un ejemploRepositorios un ejemplo
Repositorios un ejemplo
 
X i4sp10 webappdep win_es
X i4sp10 webappdep win_esX i4sp10 webappdep win_es
X i4sp10 webappdep win_es
 
Manualoracle 1
Manualoracle 1Manualoracle 1
Manualoracle 1
 
Manual Jsf
Manual JsfManual Jsf
Manual Jsf
 
Postgres tutorial
Postgres tutorialPostgres tutorial
Postgres tutorial
 
Gasl
GaslGasl
Gasl
 
Teoría hardware (1)
Teoría hardware (1)Teoría hardware (1)
Teoría hardware (1)
 
Manual crystal reports_xi
Manual crystal reports_xiManual crystal reports_xi
Manual crystal reports_xi
 
2096834 Instalando Debian
2096834 Instalando Debian2096834 Instalando Debian
2096834 Instalando Debian
 
Introduccion a Joomla
Introduccion a JoomlaIntroduccion a Joomla
Introduccion a Joomla
 

Semelhante a Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01

Semelhante a Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01 (20)

Manualpletooracleespa±olspanish
Manualpletooracleespa±olspanishManualpletooracleespa±olspanish
Manualpletooracleespa±olspanish
 
Manual.completo.oracle.9i
Manual.completo.oracle.9iManual.completo.oracle.9i
Manual.completo.oracle.9i
 
kupdf.net_bases-de-datos.pdf
kupdf.net_bases-de-datos.pdfkupdf.net_bases-de-datos.pdf
kupdf.net_bases-de-datos.pdf
 
Guía 03. Ejercicios. Realización de consultas SQL - José J Sánchez H
Guía 03. Ejercicios. Realización de consultas SQL - José J Sánchez HGuía 03. Ejercicios. Realización de consultas SQL - José J Sánchez H
Guía 03. Ejercicios. Realización de consultas SQL - José J Sánchez H
 
Excel avanzado 2010
Excel avanzado 2010Excel avanzado 2010
Excel avanzado 2010
 
Manual completo python
Manual completo pythonManual completo python
Manual completo python
 
Python desde 0
Python desde 0Python desde 0
Python desde 0
 
Algoritmosy estructurasdedatos2015 1
Algoritmosy estructurasdedatos2015 1Algoritmosy estructurasdedatos2015 1
Algoritmosy estructurasdedatos2015 1
 
Tutorial Openoffice.org base
Tutorial Openoffice.org baseTutorial Openoffice.org base
Tutorial Openoffice.org base
 
Tutorial o oobase
Tutorial o oobaseTutorial o oobase
Tutorial o oobase
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Guia eejerciciospracticos
Guia eejerciciospracticosGuia eejerciciospracticos
Guia eejerciciospracticos
 
Fwpa doc-desarrollo
Fwpa doc-desarrolloFwpa doc-desarrollo
Fwpa doc-desarrollo
 
Datos con r
Datos con rDatos con r
Datos con r
 
Bases de-datos
Bases de-datosBases de-datos
Bases de-datos
 
Bases de-datos
Bases de-datosBases de-datos
Bases de-datos
 
Arcview fao
Arcview faoArcview fao
Arcview fao
 
Manualmoodle
ManualmoodleManualmoodle
Manualmoodle
 

Libromanejo de-datos-con-visual-basic-y-asp-141122104916-conversion-gate01

  • 1. 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. 2
  • 3. 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 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 17 1.2Clases 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. 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. 19 bindebug 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 38 Figura 1.27 Hoja de Excel con datos exportados desde VB.NET. 1.7Exportar 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 52 2.4Conexió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. 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. 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. 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. 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. 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. 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:bdaccessbdaccesslibrovbnet.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. 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