Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ZecaLoteiro

[Resolvido] visualizar todos DataRelation de um DataTable

Recommended Posts

Bom dia Srs,

 

Tenho um dataSet com um dataRelation entre duas tabelas.

Preciso visualizar em um gridView essas informações, como se fosse um INNER JOIN do SQL.

É possível?

Ou terei que tratar linha a linha???

 

Desde já obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum...

Exatamente desta forma não tentei....

Mas coloquei o DS como source, com as colunas em autogenerate. Mas ele exibe sempre os dados da Table(0).

 

Vou tentar forçar as colunas....

E falo no que deu.

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Infelizmente dessa forma não deu certo.

Apresenta um erro dizendo que a coluna solicitada não faz parte do datasource.

 

Resolvi criando um método para fazer o inner join.

Sei que não está 100%, e pode apresentar diversos conflitos, mas está me atendendo nos requisitos que preciso.

 

Public Shared Function innerJoin(tabelaFilho As DataTable, tabelaPai As DataTable, relation As DataRelation) As DataTable
   Dim retorno As DataTable = preparaTabelaRetornoInner(tabelaFilho, tabelaPai)
   For Each linha As DataRow In tabelaFilho.Rows
     Dim complemento As DataRow = linha.GetParentRow(relation)
     Dim novaLinha As DataRow = retorno.NewRow
     For Each coluna As DataColumn In retorno.Columns
       If tabelaFilho.Columns.IndexOf(coluna.ColumnName) > -1 Then
         novaLinha.Item(coluna.ColumnName) = linha.Item(coluna.ColumnName)
       Else
         novaLinha.Item(coluna.ColumnName) = complemento.Item(coluna.ColumnName)
       End If
     Next
     retorno.Rows.Add(novaLinha)
   Next
   Return retorno
 End Function
 Public Shared Function preparaTabelaRetornoInner(ByVal tabela1 As DataTable, ByVal tabela2 As DataTable) As DataTable
   Dim novaTabela As DataTable = New DataTable
   For Each coluna As DataColumn In tabela1.Columns
     novaTabela.Columns.Add(coluna.ColumnName)
   Next
   For Each coluna As DataColumn In tabela2.Columns
     If novaTabela.Columns.IndexOf(coluna.ColumnName) = -1 Then
       novaTabela.Columns.Add(coluna.ColumnName)
     End If
   Next
   Return novaTabela
 End Function

 

De qualquer forma valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.