Eruano's Blog

Simple y con foco… como debe ser!

Crear DataSet con Tablas y Relaciones en VB 2003

with one comment

A continuacion voy a dar un ejemplo de como almacenar, en un DataSet, el siguiente modelo de datos:

Modelo a Implementar

Ademas vamos a suponer que Producto es Entidad Debil con respecto a Marca, esto es que la clave de la Marca formará parte de la llave primaria de la entidad producto.

He aqui el codigo en VB 2003, espero os sea de ayuda:


' SE CREA EL DATA SET
Dim mdsResultados as DataSet
mdsResultados = New DataSet

' SE CREAN LAS TABLAS A INCLUIR EN EL DATA SET
Dim dtPersona As DataTable
Dim dtCompra As DataTable
Dim dtProducto As DataTable
Dim dtMarca As DataTable
Dim dcColumna As DataColumn
Dim drelRelacion As DataRelation

' A CADA TABLA SE LE INSERTAN LAS COLUMNAS NECESARIAS SEGUN EL MODELO
' TABLA PERSONA
dtPersona = New DataTable("Persona")
dcColumna = New DataColumn("PersonaId")
dcColumna.AllowDBNull = False
dtPersona.Columns.Add(dcColumna)
dcColumna = New DataColumn("PersonaNombre")
dcColumna.AllowDBNull = True
dtPersona.Columns.Add(dcColumna)


' TABLA MARCA
dtMarca = New DataTable("Marca")
dcColumna = New DataColumn("MarcaId")
dcColumna.AllowDBNull = False
dtMarca.Columns.Add(dcColumna)
dcColumna = New DataColumn("MarcaNombre")
dcColumna.AllowDBNull = False
dtMarca.Columns.Add(dcColumna)


'TABLA PRODUCTO
dtProducto = New DataTable("Producto")
dcColumna = New DataColumn("ProductoId")
dcColumna.AllowDBNull = False
dtProducto.Columns.Add(dcColumna)
dcColumna = New DataColumn("ProductoNombre")
dcColumna.AllowDBNull = False
dtProducto.Columns.Add(dcColumna)
' Esta columna sera la referencia hacia la tabla marca
dcColumna = New DataColumn("MarcaId")
dcColumna.AllowDBNull = False
dtProducto.Columns.Add(dcColumna)


' TABLA COMPRA
dtCompra = New DataTable("Compra")
' Esta columnas sera la referencia hacia la tabla Persona
dcColumna = New DataColumn("PersonaId")
dcColumna.AllowDBNull = False
dtCompra.Columns.Add(dcColumna)
' Las siguientes dos columnas serviran de referencia hacia la tabla producto
dcColumna = New DataColumn("ProductoId")
dcColumna.AllowDBNull = False
dtCompra.Columns.Add(dcColumna)
dcColumna = New DataColumn("MarcaId")
dcColumna.AllowDBNull = False
dtCompra.Columns.Add(dcColumna)


' SE INSERTAN LAS TABLAS EN EL DATASET
mdsResultados.Tables.Add(dtPersona)
mdsResultados.Tables.Add(dtCompra)
mdsResultados.Tables.Add(dtProducto)
mdsResultados.Tables.Add(dtMarca)


' SE CREAN LAS RELACIONES ENTRE LAS TABLAS
' Relacion entre producto y marca
drelRelacion = New DataRelation("ProductoMarca", dtMarca.Columns("MarcaId"), dtProducto.Columns("MarcaId"))
mdsResultados.Relations.Add(drelRelacion)


' Relacion entre compra y producto
Dim colPadre(1) As DataColumn
Dim colHijas(1) As DataColumn
colPadre(0) = dtCompra.Columns("ProductoId")
colPadre(1) = dtCompra.Columns("MarcaId")
colHijas(0) = dtProducto.Columns("ProductoId")
colHijas(1) = dtProducto.Columns("MarcaId")
drelRelacion = New DataRelation("CompraProducto", colPadre, colHijas)
mdsResultados.Relations.Add(drelRelacion)


' Relacion entre producto y marca
drelRelacion = New DataRelation("CompraPersona", dtPersona.Columns("PersonaId"), dtCompra.Columns("PersonaId"))
mdsResultados.Relations.Add(drelRelacion)

Y listo tendremos nuestro dataset con el modelo de datos que planteamos anteriormente. Cualquier inquietud no dudes en preguntar 🙂

Written by eruano

3 agosto 2010 a 12:01 am

Una respuesta

Subscribe to comments with RSS.

  1. Felicitaciones muy buen post.

    idmirsoft

    17 abril 2012 at 12:51 pm


Deja un comentario