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

DataRelation en vez de inner join?

Estas en el tema de DataRelation en vez de inner join? en el foro de .NET en Foros del Web. Hola... Estoy empezando con esto y estoy realizando pequeñas pruebas... En primer lugar, he realizado una consulta para capturar los datos de dos tablas creadas ...
  #1 (permalink)  
Antiguo 11/08/2004, 09:59
 
Fecha de Ingreso: agosto-2004
Mensajes: 37
Antigüedad: 19 años, 8 meses
Puntos: 0
Sonrisa DataRelation en vez de inner join?

Hola...

Estoy empezando con esto y estoy realizando pequeñas pruebas... En primer lugar, he realizado una consulta para capturar los datos de dos tablas creadas en sql server, consulta realizada con inner join y sin problemas... Ahora, estoy intentando hacer lo mismo pero con el objeto DataRelation... ¿es posible hacerlo o DataRelation es sólo para relaciones y tablas que "cree" con .net directamente?

El código que he implementado para obtener todos los libros del usuario '01' viene siendo el siguiente:
{
string SelStr1,SelStr2;
SelStr1 = "Select * from libro";
SelStr2 = "Select * from usuario where codigo_usuario='01'";

SqlCommand SelCom1,SelCom2;
SelCom1 = new SqlCommand(SelStr1,sqlConnection1);
SelCom2 = new SqlCommand(SelStr2,sqlConnection1);

sqlDataAdapter1.SelectCommand = SelCom1;
sqlDataAdapter2.SelectCommand = SelCom2;

//Creo un DataSet para contener los datos de las consultas anteriores
DataSet dsUnion;
dsUnion = new DataSet("dsLibrosDeUsuario");
dsUnion.Tables.Add("usuario");
dsUnion.Tables.Add("libro");

sqlConnection1.Open();
sqlDataAdapter1.SelectCommand.ExecuteNonQuery();
sqlDataAdapter1.Fill(dsUnion,"libro");
sqlDataAdapter2.SelectCommand.ExecuteNonQuery();
sqlDataAdapter2.Fill(dsUnion,"usuario");

//Se crean los objetos DataColumn de los dos objetos.
//Existe relacion 1:N entre usuarios y libros, por lo que la clave
//principal de usuario está también en la tabla libro
DataColumn parentCol,childCol;
parentCol = dsUnion.Tables["usuario"].Columns["codigo_usuario"];
childCol = dsUnion.Tables["libro"].Columns["codigo_usuario"];

//Se crea el objeto DataRelation para relacionar ambas tablas
DataRelation relLibrosDeUsuario;
relLibrosDeUsuario = new DataRelation("LibrosDeUsuario",parentCol,childCol) ;

dsUnion.Relations.Add(relLibrosDeUsuario);

sqlConnection1.Close();

return dsUnion;
}

El error que me sale es:
System.ArgumentException: No se puede habilitar esta restricción ya que todos los valores no tienen los valores primarios correspondientes.
at System.Data.DataRelationCollection.Add(DataRelatio n relation)

¿Qué estoy haciendo mal?

Gracias...
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 23:29.