DATAGRIDVIEW - FILTRAR DADOS DE TRÊS TABELAS
Boa Noite.
Tenho que popular um datagridview com seis colunas: Banco, Data, Tipo, Nº Doc, Descrição e Valor. Cada coluna recebe dados de várias tabelas.
Ex.: A Coluna Data pode receber dados de todas as tabelas com campo data. O mesmo vale para as outras colunas.
Uso o seguintte código:
O datagridview é montado com o total de linhas correto mas os dados não aparecem.
Espero que possam me ajudar.
Tenho que popular um datagridview com seis colunas: Banco, Data, Tipo, Nº Doc, Descrição e Valor. Cada coluna recebe dados de várias tabelas.
Ex.: A Coluna Data pode receber dados de todas as tabelas com campo data. O mesmo vale para as outras colunas.
Uso o seguintte código:
Private Sub btnDataGridCC_Click(sender As Object, e As EventArgs) Handles btnDataGridCC.Click
Dim sqlCon As New SqlConnection(strCmd)
Dim strSql As String = [Ô]Select TB_Banco.Banco, TB_Cheque.Data, TB_Cheque.Tipo, TB_Cheque.NumeroCheque, TB_Cheque.Valor, [Ô] & _
[Ô]TB_Deposito.Data, TB_Deposito.Tipo1, TB_Deposito.NumDoc, TB_Deposito.Valor [Ô] & _
[Ô]FROM TB_Banco [Ô] & _
[Ô]INNER JOIN TB_Cheque ON TB_Banco.Banco = TB_Cheque.Banco [Ô] & _
[Ô]INNER JOIN TB_Deposito ON TB_Banco.Banco = TB_Deposito.Banco [Ô] & _
[Ô]WHERE TB_Cheque.Banco = [ô][Ô] & txtBancoPrincipal.Text & [Ô][ô][Ô]
Dim sqlCmd As New SqlCommand(strSql, sqlCon)
Dim da As New SqlDataAdapter(sqlCmd)
Dim dt As DataTable = New DataTable([Ô]ContaCorrente[Ô])
dgvContaCorrente.Columns.Clear()
da.Fill(dt)
With dgvContaCorrente
.ColumnCount = 6
.AutoGenerateColumns = False
.Columns(0).Name = [Ô]Banco[Ô]
.Columns(1).Name = [Ô]Data[Ô]
.Columns(2).Name = [Ô]Tipo[Ô]
.Columns(3).Name = [Ô]Nº Doc[Ô]
.Columns(4).Name = [Ô]Descrição[Ô]
.Columns(5).Name = [Ô]Valor[Ô]
.Columns(0).Width = 50
.Columns(1).Width = 79
.Columns(2).Width = 79
.Columns(3).Width = 79
.Columns(4).Width = 155
.Columns(1).Width = 80
.Columns(0).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(1).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(2).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(3).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(4).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(5).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.AllowUserToOrderColumns = False
.AllowUserToResizeColumns = False
.AllowUserToResizeRows = False
End With
dgvContaCorrente.DataSource = dt
End Sub
O datagridview é montado com o total de linhas correto mas os dados não aparecem.
Espero que possam me ajudar.
Vamos lá.
Usei o Access para fazer o teste.
.AutoGenerateColumns = False tem que ser true.
Código para dar nome as colunas e outros não está compatÃvel. Faça de forma manual.
Quantas as tabelas!!!!!!!!!!!!!!!!
Acho melhor rever seu conceito.
Usei o Access para fazer o teste.
.AutoGenerateColumns = False tem que ser true.
Código para dar nome as colunas e outros não está compatÃvel. Faça de forma manual.
Quantas as tabelas!!!!!!!!!!!!!!!!
Acho melhor rever seu conceito.
Olá OMAR
Se coloco AutoGenerateColumns = False como True O Datagridview e populado com os valores de cada select da minha consulta e não é o que quero
O código para dar nome as colunas é porque tenho que entrar com os valores da consulta por data, mesclando as tabelas, como se fosse um formulário de conta corrente bancário que vemos nos sites. Pode ser que tal dia não tenha depósitos e só cheques emitidos e vice-versa.
Andei pesquisando que é possÃvel através de um datatable usar a mesma coluna para dados de tabelas diferentes. o problema é como fazer isso.
Se tiver alguma ideia para que eu possa chegar ao resultado desejado, fique a vontade para opinar.
Mas chegamos lá. Muito obrigado pela atenção.
Se coloco AutoGenerateColumns = False como True O Datagridview e populado com os valores de cada select da minha consulta e não é o que quero
O código para dar nome as colunas é porque tenho que entrar com os valores da consulta por data, mesclando as tabelas, como se fosse um formulário de conta corrente bancário que vemos nos sites. Pode ser que tal dia não tenha depósitos e só cheques emitidos e vice-versa.
Andei pesquisando que é possÃvel através de um datatable usar a mesma coluna para dados de tabelas diferentes. o problema é como fazer isso.
Se tiver alguma ideia para que eu possa chegar ao resultado desejado, fique a vontade para opinar.
Mas chegamos lá. Muito obrigado pela atenção.
Cara,
Vou te ser sincero: nunca consegui popular o DataGridView assim em WindosForm.
Eu faço assim:
Claro que, no exemplo acima, se o DataGridView tiver 4 colunas vai dar erro.
Então a quantidade de valores tem que ser igual à quantidade de colunas do DataGridView.
No se caso, você vai ter que fazer um For Each no DataTable, por exemplo:
Cara, não estou usando o VS mas espero que ajude.
Vou te ser sincero: nunca consegui popular o DataGridView assim em WindosForm.
Eu faço assim:
DataGridView1.Rows.Add(valor1, valor2, valor3, valor4, valor5)
Claro que, no exemplo acima, se o DataGridView tiver 4 colunas vai dar erro.
Então a quantidade de valores tem que ser igual à quantidade de colunas do DataGridView.
No se caso, você vai ter que fazer um For Each no DataTable, por exemplo:
For Each linha As DataRow In DataTable.Tables(0).Rows
DataGridView1.Rows.Add(linha.Item(0), linha.Item(1), linha.Item(2), linha.Item(3), linha.Item(4))
Next
Cara, não estou usando o VS mas espero que ajude.
De novo.
Rever conceitos.
Tudo indica que,
TB_Banco.Banco = parece texto, campo da tabela.
TB_Deposito.Banco = parece texto, campo da tabela.
TB_Cheque.Banco =parece texto campo, da tabela
Repetindo o mesmo nome em várias tabelas.
Coloque na sua consulta aquilo que vai aparecer no datagridview.
Escolhe os campos que vão aparecer
Data existe dois.
Valor existe dois.
Restringe aquilo que vai aparecer.
Rever conceitos.
Tudo indica que,
TB_Banco.Banco = parece texto, campo da tabela.
TB_Deposito.Banco = parece texto, campo da tabela.
TB_Cheque.Banco =parece texto campo, da tabela
Repetindo o mesmo nome em várias tabelas.
Coloque na sua consulta aquilo que vai aparecer no datagridview.
Escolhe os campos que vão aparecer
Data existe dois.
Valor existe dois.
Restringe aquilo que vai aparecer.
Olá amigos
Usei como exemplo a dica do PEGUDO para popular datagrid.
E também revi meus conceitos a respeito de montar o datagrid
Estou dando como encerrado o tópico
Muito obrigado pela ajuda
Usei como exemplo a dica do PEGUDO para popular datagrid.
E também revi meus conceitos a respeito de montar o datagrid
Estou dando como encerrado o tópico
Muito obrigado pela ajuda
Tópico encerrado , respostas não são mais permitidas