Вы находитесь на странице: 1из 10

Cmo crear un objeto DataSet con declaracin de tipos con Visual Studio

Por Enrique Martnez Montejo


ltima revisin: 27/06/2007

Un objeto DataSet con declaracin de tipos (o DataSet tipado, como suelen denominarlo
algunos usuarios de los grupos de noticias de .net), simplemente es un objeto DataSet
normal, ya que deriva de la propia clase System.Data.DataSet, pero que en lugar de tener
los objetos DataTable dentro de una coleccin denominada Tables, dispone de ellos como
propiedades de la propia clase del objeto DataSet con declaracin de tipos creado.

Hay varias formas de crear con Visual Studio un objeto DataSet con declaracin de tipos.
Quizs, la ms utilizada por los usuarios sea ejecutando el Asistente para la configuracin
de orgenes de datos (Figura 1), que podr acceder al mismo seleccionando la opcin
Agregar nuevo origen de datos existente en el men Datos. En este artculo, vamos a dejar a
un lado a los asistentes, y crearemos el conjunto de datos nosotros mismos, lo que no
significa que tengamos que escribir una gran cantidad de cdigo XML, porque de ello
tambin se encargar el propio Visual Studio.
Figura 1. Asistente para la configuracin de orgenes de datos

Lo primero que tiene que hacer es iniciar un nuevo proyecto de Visual Basic, seleccionando
la opcin Proyecto vaco (Figura 2). Esto har que Visual Studio nos presente un proyecto
sin ningn tipo de "aditivos aadidos", tales como formularios, mdulos de clase, o de
cualquier otra naturaleza. El objetivo de ste artculo es crear desde cero un proyecto de
Visual Basic, que sea capaz de mostrar en un control DataGridView los datos de la tabla
Customers de la base de datos Northwind de Microsoft SQL Server 2000, y de actualizar la
fuente de datos con las modificaciones introducidas por el usuario.

NOTA: Debido a que la tabla Customers de la base de datos Northwind, puede modificarse
como resultado de la ejecucin del proyecto de ejemplo, le recomiendo que haga una copia
de seguridad para que posteriormente pueda restaurarla si ese es su deseo.

Figura 2. Cuadro de dilogo Nuevo proyecto, desde donde podr indicar su intencin de
crear un proyecto vaco.

Como los proyectos vacos de Visual Basic no tienen referenciada ninguna biblioteca,
tendremos que aadrlas manualmente. Para ello, haga clic con el botn secundario del
ratn en el nombre del proyecto existente en la ventana Explorador de soluciones, y
seleccione la opcin Agregar referencia. Procure que la ficha .NET del cuadro de dilogo
Agregar referencia se encuentra activa, y seleccione los siguientes ensamblados, mientras
mantiene pulsada la tecla Ctrl:

System
System.Data
System.Web.Services
System.Xml

NOTA: Estas referencias se crean automticamente cuando aadimos al proyecto un nuevo


conjunto de datos. Pero puede suceder que stas referencien a otras versiones de los
mismos ensamblados instalados en el equipo, producindose casos ambiguos en los
nombres de las clases existentes en ensamblados distintos, por lo que mi consejo es que
usted mismo aada manualmente las referencias apropiadas al proyecto.

A continuacin, desde el Explorador de servidores vamos a crear una nueva conexin que
apunte a la base de datos Northwind de SQL Server 2000. Por supuesto, si no dispone de
esta base de datos, o bien, de una versin cualquiera de Microsoft SQL Server, no importa,
porque puede crear el conjunto de datos para que seale a un origen de datos OleDb, como
por ejemplo, a una base de datos Microsoft Access. Eso s, le recomiendo encarecidamente
que la tabla que elija de la base de datos, tenga establecida una clave principal, a fin que el
generador del objeto DataSet con declaracin de tipos, pueda construir adecuadamente las
consultas SQL de actualizacin (INSERT INTO, UPDATE y DELETE). De no existir una
clave principal, el trabajo de construir el objeto DataSet se puede complicar un poco ms.

Una vez aadida la conexin al Explorador de servidores (Figura 3), procederemos ahora a
crear el propio objeto DataSet con declaracin de tipos. Para ello seleccione agregar un
nuevo elemento al proyecto, y elija la opcin Conjunto de datos (Figura 4), dejando el
mismo nombre de archivo que nos propone Visual Studio (DataSet1.xsd). Esto hace que se
abra de inmediato el Diseador del DataSet, donde se nos indica que arrastremos elementos
de la base de datos existente en el Explorador de servidores.

Figura 3. Ventana del Explorador de servidores, donde se encuentra seleccionada la


conexin con la base de datos Northwind.
Figura 4. Cuadro de dilogo Agregar nuevo elemento, desde donde podr seleccionar un
conjunto de datos.

Como se supone que ya tiene creada la conexin con la base de datos Northwind en el
Explorador de servidores, simplemente deber desplegar la coleccin de tablas de la base
de datos, para arrastrar la tabla Customers al Diseador del DataSet (Figura 5). Esta simple
operacin es todo lo que necesita hacer para crear un objeto DataSet con declaracin de
tipos. Como ver, la operacin ha sido mucho ms fcil que utilizando el Asistente para la
configuracin de orgenes de datos.
Figura 5. Vista del conjunto de datos creado en la ventana Diseador del DataSet.

Podr observar que se ha creado un objeto DataTable llamado Customers (o con el nombre
de la tabla seleccionada, si la conexin la ha creado utilizando otra base de datos distinta), y
un objeto TableAdapter que se llamar igual que la tabla seguido del trmino TableAdapter,
como por ejemplo, CustomersTableAdapter. Por supuesto que puede modificar el nombre
de los objetos, desde la propia ventana de Propiedades, pero por ahora, deje el nombre que
por defecto asigna Visual Studio.

El objeto DataTable creado contiene la coleccin de objetos Column, que como es de


esperar, contiene los campos de la tabla Customers, teniendo la oportunidad de modificar
los valores de las propiedades de los campos. Recorra los campos y observe en la ventana
Propiedades que los valores de las columnas son correctos: nombre del campo, tipo de dato,
longitud mxima de la columna, etc.

El objeto TableAdapter creado, lo que en realidad encapsula es un objeto DataAdapter


correspondiente al proveedor de datos .net utilizado, en este caso un objeto
SqlDataAdapter. Como es sabido, el objeto DataAdapter es el objeto que sirve de puente
entre nuestra aplicacin y la base de datos, por lo que se utiliza tanto para seleccionar los
datos, como para actualizar los mismos.

Como objeto DataAdapter que es, el objeto TableAdapter creado tambin tiene las clsicas
propiedades del primero, las cuales podr observarlas en la ventana de Propiedades. No
estara de ms que le echara un vistazo a las propiedades SelectCommand, InsertCommand,
DeleteCommand y UpdateCommand, mayormente para que conozca las distintas consultas
SQL y coleccin de objetos Parameters que Visual Studio ha creado por nosotros, cuestin
sta que hay que agradecer por el trabajo que nos ahorra a los programadores de
aplicaciones de bases de datos.
Asimismo, la operacin de crear el conjunto de datos tambin nos ha creado una propiedad
de aplicacin, que en realidad contiene la cadena de conexin que se ha utilizado para crear
el conjunto de datos, y que ser la que posteriormente utilizar la aplicacin para conectarse
con la base de datos. Si desea conocer la cadena de conexin, abra las propiedades del
proyecto (Figura 6), y seleccione la ficha Configuracin. Por defecto, el nombre de la
propiedad tendr el nombre de la base de datos seguido del trmino ConnectionString, por
tanto le aparecer el nombre NorthwindConnectionString, siendo el mbito de la propiedad
el de la propia aplicacin.

Figura 6. Vista de la propiedad de aplicacin NorthwindConnectionString.

Una vez conocidas las propiedades del conjunto de datos creado, ya puede cerrar el
Diseador del DataSet una vez que haya guardado los cambios en el archivo
correspondiente al conjunto de datos creado (DataSet1.xsd).

Aada ahora un nuevo formulario al proyecto, y hgalo el Objeto inicial de la aplicacin.


Para ello, abra nuevamente las propiedades del proyecto, y en la ficha Aplicacin,
despliegue el cuadro combinado Objeto inicial para seleccionar el formulario de inicio. En
esa misma ficha podr observar que no es posible habilitar el marco de trabajo de la
aplicacin, y por tanto, los estilos visuales de Windows XP. No se preocupe, porque lo
habilitaremos en tiempo de ejecucin.

La operacin de aadir un formulario al proyecto vaco de Visual Basic, hace que


automticamente se referencien tambin los siguientes ensamblados:

System
System.Drawing
System.Windows.Forms

Creado el formulario de inicio, ya puede proceder a generar la aplicacin para que el


conjunto de datos y el objeto TableAdapter creados, puedan visualizarse correctamente en
el Cuadro de Herramientas, en concreto, en el apartado de Componentes del proyecto
(Figura 7).
Figura 7. Vista del Cuadro de Herramientas, con los objetos correspondientes al conjunto
de datos creado.

Abra el formulario de inicio de nuestra aplicacin, y adale un control DataGridView y


dos controles Button (Figura 8). Igualmente, arrastre desde el Cuadro de Herramientas al
formulario, una instancia del componente DataSet1 y otra del componente
CustomersTableAdapter, que como es de esperar, ambos se alojarn en la Bandeja de
Componentes del diseador de formularios de Windows.

Ya slo nos queda escribir el cdigo adecuado para mostrar los datos en el control
DataGridView, y poder actualizar la tabla de la base de datos. Abra el mdulo de cdigo
del formulario de inicio, y pegue el siguiente cdigo:

Imports System.Windows.Forms

Public Class Form1

Private Sub Form1_Load( _


ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load

' Habilitamos los estilos visuales de Windows XP.


'
Application.EnableVisualStyles()

With Me
.Text = "Creacin de un Conjunto de Datos"

.Button1.Text = "Cargar"
.Button2.Text = "Guardar"
.Button1.Select()

.DataGridView1.DataSource = DataSet11
.DataGridView1.DataMember = "Customers"
End With

End Sub
Private Sub Button1_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click

' Rellenamos el objeto DataSet.


'
Try
Me.CustomersTableAdapter1.Fill(Me.DataSet11.Customers)

Catch ex As Exception
MessageBox.Show(ex.Message)

End Try

End Sub

Private Sub Button2_Click( _


ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click

' Actualizamos la base de datos


'
Try
Me.CustomersTableAdapter1.Update(Me.DataSet11.Customers)

Catch ex As Exception
MessageBox.Show(ex.Message)

End Try

End Sub

End Class

Si desea actualizar la tabla Customers, procure modificar cualquier campo distinto del
campo CustomerID, que es el que forma la clave principal de la tabla, porque de hacerlo,
obtendr la correpondiente excepcin en tiempo de ejecucin, debido a que dicho campo se
encuentra relacionado con el campo del mismo nombre de la tabla Orders.

Como habr tenido la oportunidad de comprobar, mediante la utilizacin de objetos


DataSet con declaracin de tipos, disponemos de una manera fcil y eficaz de actualizar
una base de datos utilizando el modo desconectado que nos dispensa ADO .NET.

Espero que el artculo haya sido de su inters, sobre todo, para los nuevos usuarios que
estn comenzando con el diseo de aplicaciones de bases de datos utilizando Visual Basic
net.
Figura 8. El formulario cargado con los datos correspondientes a la tabla Customers.
Bibliografa :

http://www.mvp-access.es/softjaen/bases/adonet/sjadonet15.htm

Вам также может понравиться