Primeramente un saludo a todos los del foro.
Bueno, les explico el problema que tengo; tengo dos tablas en SQL Server 2005 llamadas Tipos: idTipo (PK),tipo y la otra Equipos: idArticulo (PK),noserie,idTipo. Las cuales tengo relacionadas por el campo idTipo.
Lo que quiero hacer es agregar esas dos tablas a un Dataset, relacionarlas (ya sea en C# o en Visual Basic), modificar algunos campos de esas tablas y volverlas a cargar al Dataset para mostrar el resultado en un DatagridView.
Por ejemplo, teniendo los siguientes datos en la tabla:
Tabla Tipos
idTipo tipo
001 CPU
002 MONITOR
003 IMPRESORA
Tabla Equipos
idArticulo noserie idTipo
001 MXJ70900 001
002 MXJ70901 001
003 CJK187IL9 003
Lo que quiero hacer es que por ejemplo; si el idTipo de la tabla Equipos = 001 que ese valor se cambie por CPU (el cual es el tipo en la tabla Tipos) y asi en todos las filas de la tabla Equipos. Esto nada mas hacerlo en el Dataset para mostrar el resultado en un DatagridView y no volcar los resultados a la BD.
Bueno, pongo la mayor parte del codigo que tengo hasta ahorita pero me marca el error: Update no puede encontrar TableMapping[' '] o DataTable
// Crear el Dataset
DataSet ds = new DataSet();
try
{
// Abrimos la conexion
conexion.Open();
// Llenamos el Dataset con el adaptador1
adaptador1.Fill(ds, "Equipos");
// Llenamos el Dataset con el adaptador2
adaptador2.Fill(ds, "Tipos");
// Llenamos el Dataset con el adaptador3
//adaptador3.Fill(ds, "Mostrar_todos");
// Cerramos la conexion
conexion.Close();
// Agregamos la relacion de las tablas Tipos y Equipos: primeramente se establece la tabla que contiene la llave primaria (en este caso Tipos, que es la tabla padre)
ds.Relations.Add("Tipos_Equipos", ds.Tables["Tipos"].Columns["idTipo"], ds.Tables["Equipos"].Columns["idTipo"]);
// Recorremos las filas de la tabla Tipos
foreach (DataRow drpadre in ds.Tables["Tipos"].Rows)
{
// Obtenemos como variables string la fila idTipo y tipo de la tabla Tipos
string idtipo_tipos = drpadre["idTipo"].ToString();
string tipo_tipos = drpadre["tipo"].ToString();
// Obtenemos las filas de la tabla hija (Equipos) en un arreglo
DataRow[] filashijas = drpadre.GetChildRows("Tipos_Equipos");
if (filashijas.Length > 0)
{
// Recorremos las filas de la tabla Equipos
foreach (DataRow drhijo in filashijas)
{
// Obtenemos como variable string la fila idTipo de la tabla hija (Equipos)
string idtipo_equipos = drhijo["idTipo"].ToString();
// Si los id de las tablas Tipos y Equipos son iguales
if (idtipo_equipos == idtipo_tipos)
{
// Sentencia SQL para actualizar el Dataset con nuevos valores
string relacion = "update Equipos set idTipo= '" + tipo_tipos + "' where idTipo= '" + idtipo_equipos + "' ";
// Crear el comando para actualizar el Dataset
SqlCommand comando3 = new SqlCommand(relacion, conexion);
// Crear el adaptador para actualizar el Dataset
SqlDataAdapter adaptador3 = new SqlDataAdapter(comando3);
// Se abre nuevamente la conexion
conexion.Open();
// Actualizamos el Dataset
adaptador3.Update(ds, "Relacion");
// Cerramos la conexion
conexion.Close();
}
}
}
}
// Llenamos el DatagridView con los datos actualizados
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "Relacion";
Espero me puedan dar alguna idea.
Gracias.