Foros del Web » Programación para mayores de 30 ;) » .NET »

Modificar datos de dos tablas relacionadas en un Dataset

Estas en el tema de Modificar datos de dos tablas relacionadas en un Dataset en el foro de .NET en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/08/2009, 18:30
 
Fecha de Ingreso: febrero-2008
Mensajes: 33
Antigüedad: 16 años, 2 meses
Puntos: 0
Modificar datos de dos tablas relacionadas en un Dataset

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.
  #2 (permalink)  
Antiguo 13/08/2009, 15:31
 
Fecha de Ingreso: febrero-2008
Mensajes: 33
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Modificar datos de dos tablas relacionadas en un Dataset

Que tal. Alguna idea?.
Buscando he encontrado como se modifica pero solo filas de una sola tabla. No he encontrado algun ejemplo donde se modifiquen filas de tablas relacionadas.

Saludos.
  #3 (permalink)  
Antiguo 18/08/2009, 20:48
 
Fecha de Ingreso: febrero-2008
Mensajes: 33
Antigüedad: 16 años, 2 meses
Puntos: 0
De acuerdo Respuesta: Modificar datos de dos tablas relacionadas en un Dataset

Bueno, realmente no logré hacerlo con tablas relacionadas como queria y pues me decidí a realizarlo con una sentencia SQL. Asi fue como lo realicé por si a alguien le sirve como me sirvió a mi:

// Crear la conexion
SqlConnection conexion = new SqlConnection(cadena);

// Sentencia SQL para mostrar el Tipo,Marca y Modelo concatenados de un articulo
string mostrar_todos = "select Equipos.idArticulo, Equipos.noserie, Tipos.tipo as Descripcion from Equipos, Tipos where Equipos.idTipo = Tipos.idTipo order by Equipos.idArticulo";

// Crear el comando para la sentencia mostrar_todos
SqlCommand comando3 = new SqlCommand(mostrar_todos, conexion);

// Crear el adaptador para el comando3
SqlDataAdapter adaptador3 = new SqlDataAdapter(comando3);

// Crear el Dataset
DataSet ds = new DataSet();

try
{
// Abrimos la conexion
conexion.Open();

// Llenamos el Dataset con el adaptador3
adaptador3.Fill(ds, "Mostrar_todos");

// Cerramos la conexion
conexion.Close();

// Llenamos el DatagridView con los datos de la consulta mostrar_todos
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "Mostrar_todos";

A lo mejor despues alguien pudiera hablar acerca de tener este mismo resultado pero haciendo uso solo del Dataset y no con una sentencia SQL.
Saludos.

Última edición por meme_cabo; 18/08/2009 a las 20:54
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:11.