SOMAR COLUNAS NO DATAGRID COM CHECKBOX
Boa noite caros colegas
Olha eu com mais uma dúvida de aprendiz
Pessoal, eu tenho um form de contas a pagar, nele eu tenho os seguintes campos configurados via código:
[Lançamento - Documento - Data Lancamento - Vencimento - Descrição - Valor - Situacao - Fornecedor]
No caso da Situação eu declarei uma variável [Dim chk As New DataGridViewCheckBoxColumn] e adicionei a coluna ao meu datagrid, [dgvContasPagar.Columns.Add(chk)] e dei seu nome de [chk.HeaderText = [Ô]Situação[Ô]]
no banco de dados, quando estiver marcado como Sim/Verdadeiro/Ativado ele vai carregar os dados da mesma forma no Grid, no entanto não estou conseguindo somar a coluna que está como chekbox que é a coluna criada como descrito.
Segue o codigo do carregamento da grid, a formatação e o código dos cálculos a serem feitos.
Um detalhe, se fosse texto, eu consigo fazer sem problemas, mas desta forma não estou conseguindo.
Using Con As OleDbConnection = GetConection()
Try
Con.Open()
Sql = [Ô]Select IDLanca,Documento,Data,Vencimento,Descricao,Valor,Situacao,Fornecedor From TBContasPagar[Ô]
Cmd = New OleDbCommand(Sql, Con)
With dgvContasPagar
.Rows.Clear()
.Columns.Clear()
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.EditMode = DataGridViewEditMode.EditProgrammatically
.MultiSelect = False
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
Dr = Cmd.ExecuteReader
.Columns.Add([Ô]IDLanca[Ô], [Ô]Nº Lanc.[Ô])
.Columns.Add([Ô]Documento[Ô], [Ô]Nº Docum.[Ô]).ToString()
.Columns.Add([Ô]Data[Ô], [Ô]Data Lançamento[Ô]).ToString()
.Columns.Add([Ô]Vencimento[Ô], [Ô]Data Vencimento[Ô]).ToString()
.Columns.Add([Ô]Descricao[Ô], [Ô]Descrição[Ô]).ToString()
.Columns.Add([Ô]Valor[Ô], [Ô]Valor Documento[Ô]).ToString()
.Columns.Add(chk) : chk.HeaderText = [Ô]Situação[Ô]
.Columns.Add([Ô]Fornecedor[Ô], [Ô]Fornecedor[Ô]).ToString()
pFormatGrid()
While Dr.Read()
.Rows.Add(Dr([Ô]IDLanca[Ô]), Dr([Ô]Documento[Ô]), Dr([Ô]Data[Ô]), Dr.Item([Ô]Vencimento[Ô]), Dr([Ô]Descricao[Ô]), _
Dr([Ô]Valor[Ô]), Dr([Ô]Situacao[Ô]), Dr([Ô]Fornecedor[Ô]))
End While
End With
pFormatGrid()
Catch ex As Exception
MsgBox([Ô]Não foram encontrados registros com este parâmetro.[Ô])
Finally
Con.Dispose()
Dr.Dispose()
End Try
End Using
Formatando Grid
With dgvContasPagar
.Columns(0).DefaultCellStyle.Format = [Ô]000[Ô]
.Columns(0).HeaderText = [Ô]Lançamento[Ô]
.Columns(0).Width = 70
.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.Columns(1).Width = 100
.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.Columns(1).HeaderText = [Ô]Documento[Ô]
.Columns(1).DefaultCellStyle.Format = [Ô]0000000000[Ô]
.Columns(2).Width = 80
.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(2).HeaderText = [Ô]Data do Lançamento[Ô]
.Columns(3).HeaderText = [Ô]Data do Vencimento[Ô]
.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(3).Width = 90
.Columns(4).Width = 250
.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Columns(4).HeaderText = [Ô]Descrição da Conta a Pagar[Ô]
.Columns(5).Width = 120
.Columns(5).HeaderText = [Ô]Valor[Ô]
.Columns(5).DefaultCellStyle.Format = [Ô]c2[Ô]
.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.Columns(6).Width = 60
End With
Somando as colunas
For Each Linha As DataGridViewRow In dgvContasPagar.Rows
[ô]Total de contas a pagar
dblTotalContas = dblTotalContas + Linha.Cells([Ô]Valor[Ô]).Value
[ô]Saldo de contas a pagar
If Linha.Cells(5).Value = CheckState.Unchecked Then
dblContasPagas = dblContasPagas + Linha.Cells([Ô]Valor[Ô]).Value
End If
If Linha.Cells(5).Value = CheckState.Checked Then
dblContasNaoPagas = dblContasNaoPagas + Linha.Cells([Ô]Valor[Ô]).Value
End If
Next
lblTotalContasPagar.Text = FormatCurrency(dblTotalContas)
lblTotalContasPagas.Text = FormatCurrency(dblContasPagas)
lblTotalContasNaoPagas.Text = FormatCurrency(dblContasNaoPagas)
Obrigado desde já
Olha eu com mais uma dúvida de aprendiz
Pessoal, eu tenho um form de contas a pagar, nele eu tenho os seguintes campos configurados via código:
[Lançamento - Documento - Data Lancamento - Vencimento - Descrição - Valor - Situacao - Fornecedor]
No caso da Situação eu declarei uma variável [Dim chk As New DataGridViewCheckBoxColumn] e adicionei a coluna ao meu datagrid, [dgvContasPagar.Columns.Add(chk)] e dei seu nome de [chk.HeaderText = [Ô]Situação[Ô]]
no banco de dados, quando estiver marcado como Sim/Verdadeiro/Ativado ele vai carregar os dados da mesma forma no Grid, no entanto não estou conseguindo somar a coluna que está como chekbox que é a coluna criada como descrito.
Segue o codigo do carregamento da grid, a formatação e o código dos cálculos a serem feitos.
Um detalhe, se fosse texto, eu consigo fazer sem problemas, mas desta forma não estou conseguindo.
Using Con As OleDbConnection = GetConection()
Try
Con.Open()
Sql = [Ô]Select IDLanca,Documento,Data,Vencimento,Descricao,Valor,Situacao,Fornecedor From TBContasPagar[Ô]
Cmd = New OleDbCommand(Sql, Con)
With dgvContasPagar
.Rows.Clear()
.Columns.Clear()
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.EditMode = DataGridViewEditMode.EditProgrammatically
.MultiSelect = False
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
Dr = Cmd.ExecuteReader
.Columns.Add([Ô]IDLanca[Ô], [Ô]Nº Lanc.[Ô])
.Columns.Add([Ô]Documento[Ô], [Ô]Nº Docum.[Ô]).ToString()
.Columns.Add([Ô]Data[Ô], [Ô]Data Lançamento[Ô]).ToString()
.Columns.Add([Ô]Vencimento[Ô], [Ô]Data Vencimento[Ô]).ToString()
.Columns.Add([Ô]Descricao[Ô], [Ô]Descrição[Ô]).ToString()
.Columns.Add([Ô]Valor[Ô], [Ô]Valor Documento[Ô]).ToString()
.Columns.Add(chk) : chk.HeaderText = [Ô]Situação[Ô]
.Columns.Add([Ô]Fornecedor[Ô], [Ô]Fornecedor[Ô]).ToString()
pFormatGrid()
While Dr.Read()
.Rows.Add(Dr([Ô]IDLanca[Ô]), Dr([Ô]Documento[Ô]), Dr([Ô]Data[Ô]), Dr.Item([Ô]Vencimento[Ô]), Dr([Ô]Descricao[Ô]), _
Dr([Ô]Valor[Ô]), Dr([Ô]Situacao[Ô]), Dr([Ô]Fornecedor[Ô]))
End While
End With
pFormatGrid()
Catch ex As Exception
MsgBox([Ô]Não foram encontrados registros com este parâmetro.[Ô])
Finally
Con.Dispose()
Dr.Dispose()
End Try
End Using
Formatando Grid
With dgvContasPagar
.Columns(0).DefaultCellStyle.Format = [Ô]000[Ô]
.Columns(0).HeaderText = [Ô]Lançamento[Ô]
.Columns(0).Width = 70
.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.Columns(1).Width = 100
.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.Columns(1).HeaderText = [Ô]Documento[Ô]
.Columns(1).DefaultCellStyle.Format = [Ô]0000000000[Ô]
.Columns(2).Width = 80
.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(2).HeaderText = [Ô]Data do Lançamento[Ô]
.Columns(3).HeaderText = [Ô]Data do Vencimento[Ô]
.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns(3).Width = 90
.Columns(4).Width = 250
.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Columns(4).HeaderText = [Ô]Descrição da Conta a Pagar[Ô]
.Columns(5).Width = 120
.Columns(5).HeaderText = [Ô]Valor[Ô]
.Columns(5).DefaultCellStyle.Format = [Ô]c2[Ô]
.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.Columns(6).Width = 60
End With
Somando as colunas
For Each Linha As DataGridViewRow In dgvContasPagar.Rows
[ô]Total de contas a pagar
dblTotalContas = dblTotalContas + Linha.Cells([Ô]Valor[Ô]).Value
[ô]Saldo de contas a pagar
If Linha.Cells(5).Value = CheckState.Unchecked Then
dblContasPagas = dblContasPagas + Linha.Cells([Ô]Valor[Ô]).Value
End If
If Linha.Cells(5).Value = CheckState.Checked Then
dblContasNaoPagas = dblContasNaoPagas + Linha.Cells([Ô]Valor[Ô]).Value
End If
Next
lblTotalContasPagar.Text = FormatCurrency(dblTotalContas)
lblTotalContasPagas.Text = FormatCurrency(dblContasPagas)
lblTotalContasNaoPagas.Text = FormatCurrency(dblContasNaoPagas)
Obrigado desde já
Linha.Cells(5).Value = True
Citação::
Linha.Cells(5).Value = True
Já tentei desta forma e não funcionou
Não está fazendo a soma.
Segue imagem realmente mostrando que realmente usando Linha.Cells(5).Value = True ou False
Não está funcionando
Não está funcionando
Contei, o index da colua deve ser 6, passei seguindo seu index, controles assim iniciam do 0, pelas minhas contas a coluna q tem o chk sera a 6, ja usei isso e foi, o efeito seria o mesmo se passar o nome da coluna ate elimina o problema de contar, so se tiver algo alem, mas nao parece, o laço ta rodando certino ate entao....
Faz assim pra ter certeza do q ta pegando poe um msgbox (linha.cells(o nome da q quer ver o q esta sendo pego ou index dela).value) nao me recordo se pra jogar no msgbox vc tem q usar ainda um. Tostring
So pra vc ver o q realmente ele ta entendendo e pegando da coluna
Faz assim pra ter certeza do q ta pegando poe um msgbox (linha.cells(o nome da q quer ver o q esta sendo pego ou index dela).value) nao me recordo se pra jogar no msgbox vc tem q usar ainda um. Tostring
So pra vc ver o q realmente ele ta entendendo e pegando da coluna
Citação::
Contei, o index da colua deve ser 6, passei seguindo seu index, controles assim iniciam do 0, pelas minhas contas a coluna q tem o chk sera a 6, ja usei isso e foi, o efeito seria o mesmo se passar o nome da coluna ate elimina o problema de contar, so se tiver algo alem, mas nao parece, o laço ta rodando certino ate entao....
Faz assim pra ter certeza do q ta pegando poe um msgbox (linha.cells(o nome da q quer ver o q esta sendo pego ou index dela).value) nao me recordo se pra jogar no msgbox vc tem q usar ainda um. Tostring
So pra vc ver o q realmente ele ta entendendo e pegando da coluna
Isso mesmo NICKSOFT
Um vacilo por falta de atenção minha... Me desculpem, mas é pressão do dia-a-dia.
Obrigado e funcionou perfeitamente agora da forma que você explicou.
Muito obrigado.
Tópico encerrado , respostas não são mais permitidas