• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

CyberBird

[vb 2005 .net] Inserir Colunas de Diferentes tabelas No Mesmo DataGrid

4 mensagens neste tópico

Quero Ter uma DataGrid que tenha uma coluna de uma outra tabela que não a sua table fonte/DataSource.

Do género :

Tabela Recepção :

RecNum

RecAno

ClienteID

Encerrada

Orçamento

.........

Tabela Cliente :

ClienteID

Nome

Morada

.........

Queria que a DataGrid apresentasse os dados da tabela Recepção, mas em vez de aparacer ClienteID que aparecesse o Nome correspondente a este campo contido na tabela Nome.

Alguma sugestão ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma hipótese é utilizares uma nova datatable com todos os dados que queres e depois é só mudares o source da datagrid para essa tabela.

No sql vais ter de utilizar INNER JOIN

Exemplo:

    SELECT RecNum, RecAno, Cliente.Nome , Encerrada,Orçamento

    FROM Recepcao INNER JOIN

Cliente ON Recepcao.ClienteID = Cliente.ClienteID

1 abraço.  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado frodo pela o teu reply.

Essa é uma das soluções, o problema é se algum dos dados da bass de dados se modificar, teria que talvez fazer um refill a essa dataset/datable  :hmm: ou então a cada modificação feita na base de dados fazer tb na dataset/datatable em que o DataGrid esta ligado.

Tenho um modulo que Inicializa todas as tabelas dentro de um DataSet e todo o programa vai buscar/apagar/updatar  informação  a essa DataSet, queria evitar criar novas datasets, pois qts mais forem criados mais dificil ira ser pra que todas tenham os mesmo valores.

Será que não há uma maneira de usar o DataSet existente, em vez de tar a criar um novo ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Encontrei uma solução simples para o meu problema sem usar novas DataTable e DataSets.

Isto pode ser útil para alguns que poderam vir a ter o mesmo problema que eu.

Tabela Rec1 = Master

Tabela Cliente = Details

Ambos relacionados pelo campo ClienteID

Imports Microsoft

Public Class Recep

    Inherits Windows.Forms.Form

Dim NCol As Integer ' Index Da Nova Coluna

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

DGV1.DataSource = Pat.IniDataSet.DS.Tables("Rec1") ' DGV1 = DataGridView1
NCol = DGV1.Columns.Add("Nome", "Nome")
DGV1.Columns(NCol).DataPropertyName = "Nome"

SetNomeValues()

End Sub
' Depois desta nova coluna adicionada  agr é  associar os valores

Sub SetNomeValues()
        Dim tmp4() As DataRow
        For i = 0 To DGV1.RowCount - 1
            tmp4 = Pat.IniDataSet.DS.Tables("Cliente").Select(String.Format("ClienteID='{0}'", Pat.IniDataSet.DS.Tables("Rec1").Rows(i).Item("ClienteID")))
            DGV1(16, i).Value = tmp4(0)("Nome") ' DGV1(IndexDaColuna,IndexDaRows)
       Next
End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora