Crear DataSet con Tablas y Relaciones en VB 2003
A continuacion voy a dar un ejemplo de como almacenar, en un DataSet, el siguiente modelo de datos:
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 🙂
Felicitaciones muy buen post.
idmirsoft
17 abril 2012 at 12:51 pm