Como acessar registros em DataTables relacionados
Quando tabelas em um dataset estão relacionadas, um objeto DataRelation pode tornar disponíveis os registros relacionados em outra tabela. Por exemplo, um DataSet que contém tabelas Customers e Orders pode ser disponibilizado.
Você pode usar um objeto DataRelation para localizar registros relacionados chamando o método GetChildRows de uma DataRow na tabela pai; este método retorna uma matriz de registros filho relacionados. Ou você pode chamar o método GetParentRow de uma DataRow na tabela filho; esse método retorna uma única DataRow da tabela pai.
Esta página da Ajuda fornece exemplos usando DataSets tipados. Para obter informações sobre navegar em relações em datasets não tipados, consulte Navegando em DataRelations.
Dica
Se você estiver trabalhando em um aplicativo de Formulários do Windows e usando os recursos de vinculação de dados para exibir dados, o formulário gerado pelo designer pode fornecer funcionalidade suficiente a seu aplicativo.Para obter mais informações, consulte as páginas em Associando controles a dados no Visual Studio, especificamente Como exibir dados relacionados em um aplicativo dos Windows Forms e Instruções passo a passo: exibindo dados relacionados em um Windows Form.
Os exemplos de código a seguir demonstram navegação em relacionamentos para cima e para baixo em DataSets tipados. Eles usam DataRows tipadas (NorthwindDataSet.OrdersRow) e os métodos gerados FindByPrimaryKey (FindByCustomerID) para localizar uma linha desejada e retornar os registros relacionados. Os exemplos compilam e executam corretamente somente se você tem:
Uma instância de um conjunto de dados chamado NorthwindDataSet com uma tabela Customers
Uma tabela Orders
Um relacionamento chamado FK_Orders_Customers relacionando as duas tabelas disponíveis ao escopo do seu código
Além disso, ambas as tabelas precisam ser preenchidas com dados para quaisquer registros a serem retornados.
Acessando registros relacionados
Para retornar os registros filho de um registro pai selecionado
Chame o método GetChildRows de uma linha de dados Customers específica e retorne uma matriz de linhas da tabela Orders:
Dim customerID As String = "ALFKI" Dim orders() As NorthwindDataSet.OrdersRow orders = CType(NorthwindDataSet.Customers.FindByCustomerID(customerID). GetChildRows("FK_Orders_Customers"), NorthwindDataSet.OrdersRow()) MessageBox.Show(orders.Length.ToString())
string custID = "ALFKI"; NorthwindDataSet.OrdersRow[] orders; orders = (NorthwindDataSet.OrdersRow[])northwindDataSet.Customers. FindByCustomerID(custID).GetChildRows("FK_Orders_Customers"); MessageBox.Show(orders.Length.ToString());
Para retornar o registro pai de um registro filho selecionado
Chame o método GetParentRow de uma linha de dados Orders específica e retorne uma única linha da tabela Customers:
Dim orderID As Integer = 10707 Dim customer As NorthwindDataSet.CustomersRow customer = CType(NorthwindDataSet.Orders.FindByOrderID(orderID). GetParentRow("FK_Orders_Customers"), NorthwindDataSet.CustomersRow) MessageBox.Show(customer.CompanyName)
int orderID = 10707; NorthwindDataSet.CustomersRow customer; customer = (NorthwindDataSet.CustomersRow)northwindDataSet.Orders. FindByOrderID(orderID).GetParentRow("FK_Orders_Customers"); MessageBox.Show(customer.CompanyName);
Consulte também
Conceitos
Preparando o aplicativo para receber dados
Associando controles a dados no Visual Studio
Outros recursos
Relacionamentos em conjuntos de dados