SOMAR COLUNA
Pessoal uma tabela com os seguintes ai beleza mais como faço para somar as coluna DEVEDOR+PARCELAMENTO no DataGridView e mostrar numa terceira coluna conforme abaixo
Devedor | Parcelamento | Valor Total
1 | 3 | 4
3 | 2 | 5
2 | 5 | 7
6 | 6 | 12
5 | 7 | 12
Devedor | Parcelamento | Valor Total
1 | 3 | 4
3 | 2 | 5
2 | 5 | 7
6 | 6 | 12
5 | 7 | 12
Faz a soma na hora de adicionar os dados na grid
Ou faz assim;
For Each i As DataGridViewRow In DataGridView1.Rows
i.Cells(2).Value = i.Cells(0).Value + i.Cells(1).Value
Next
Segue a função
Private Sub CarregaVendas()
Dim dr As OleDbDataReader = Nothing
Using con As OleDbConnection = GetConnection()
Try
con.Open()
Dim sql As String = [Ô][Ô]
sql = [Ô]SELECT CodCliente, Nome, Devedor, ValorParcelamento FROM tblCliente WHERE Devedor > 0 Or ValorParcelamento > 0[Ô]
Dim cmd As OleDbCommand = New OleDbCommand(sql, con)
Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
Dim dt As DataTable = New DataTable
da.Fill(dt)
dgvTodas.DataSource = dt
Catch ex As Exception
Finally
con.Close()
End Try
End Using
End Sub
Private Sub CarregaVendas()
Dim dr As OleDbDataReader = Nothing
Using con As OleDbConnection = GetConnection()
Try
con.Open()
Dim sql As String = [Ô][Ô]
sql = [Ô]SELECT CodCliente, Nome, Devedor, ValorParcelamento FROM tblCliente WHERE Devedor > 0 Or ValorParcelamento > 0[Ô]
Dim cmd As OleDbCommand = New OleDbCommand(sql, con)
Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
Dim dt As DataTable = New DataTable
da.Fill(dt)
dgvTodas.DataSource = dt
Catch ex As Exception
Finally
con.Close()
End Try
End Using
End Sub
rivate Sub CarregaVendas()
Dim dr As OleDbDataReader = Nothing
Using con As OleDbConnection = GetConnection()
Try
con.Open()
Dim sql As String = [Ô][Ô]
sql = [Ô]SELECT CodCliente, Nome, Devedor, ValorParcelamento FROM tblCliente WHERE Devedor > 0 Or ValorParcelamento > 0[Ô]
Dim cmd As OleDbCommand = New OleDbCommand(sql, con)
Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
Dim dt As DataTable = New DataTable
da.Fill(dt)
dgvTodas.DataSource = dt
Catch ex As Exception
Finally
con.Close()
End Try
End Using
End Sub
Dim dr As OleDbDataReader = Nothing
Using con As OleDbConnection = GetConnection()
Try
con.Open()
Dim sql As String = [Ô][Ô]
sql = [Ô]SELECT CodCliente, Nome, Devedor, ValorParcelamento FROM tblCliente WHERE Devedor > 0 Or ValorParcelamento > 0[Ô]
Dim cmd As OleDbCommand = New OleDbCommand(sql, con)
Dim da As OleDbDataAdapter = New OleDbDataAdapter(cmd)
Dim dt As DataTable = New DataTable
da.Fill(dt)
dgvTodas.DataSource = dt
For Each i As DataGridViewRow In DataGridView1.Rows
i.Cells(2).Value = i.Cells(0).Value + i.Cells(1).Value
Next
Catch ex As Exception
Finally
con.Close()
End Try
End Using
End Sub
Aqui com migo não funcionar
For i = 0 To dgvTodas.Rows.Count - 1
dgvTodas.CurrentCell = dgvTodas.Rows(i).Cells(0)
dgvTodas.CurrentRow.Cells(2).Value = dgvTodas.CurrentRow.Cells(0).Value + dgvTodas.CurrentRow.Cells(1).value
Next
A terceira coluna já existe no DataGrid?
Olha o erro que aparece
O indice esta fora do Intervalo. Ele deve ser não-negativo e menor que o
tamanho da coleção
Nome do parâmetro index
O Ideal quando se vai preencher um grid, é vincular ele a um List<T>. Dessa forma vc usa de abusa da namespace System.Linq
vc consegue fazer tudo, somar, pesquisar, filtrar, classificar, e tudo de uma forma tipada
vc consegue fazer tudo, somar, pesquisar, filtrar, classificar, e tudo de uma forma tipada
Citação:O indice esta fora do Intervalo. Ele deve ser não-negativo e menor que o
tamanho da coleção
Nome do parâmetro index
é porque não tem uma terceira coluna... como o CLEVERTON disse, o certo seria um list<T> Da uma olhada
Sobre o erro, tente criar uma nova tabela no banco de dados Valor Total
A terceira e Quarta coluna já existe no DataGrid? so que elas estão oculta.
No DataGrid vai aparecer assim
Cod.Cliente Nome do Cliente Total a Receber
75 Pedro Lima aqui var aparecer a soma do Devedor + Parcelamento
No DataGrid vai aparecer assim
Cod.Cliente Nome do Cliente Total a Receber
75 Pedro Lima aqui var aparecer a soma do Devedor + Parcelamento
Tópico encerrado , respostas não são mais permitidas