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...