SOMAR VALOR DE COLUNA LISTVIEW
Olá amigos,
Tenho um campo texto que mostra total da coluna Valor de um listview. Uso o seguinte código:
Private Sub SomarChequeCC()
Dim i As Integer
Dim Soma As Single = 0
For i = 0 To listChequeCC.Items.Count - 1
Soma += CDec(listChequeCC.Items(i).SubItems(3).Text)
Next
txtValorChequeCC.Text = CDec(Soma)
End Sub
o Mesmo campo texto também é usado para mostrar o valor cadastrado no dia corrente. Segue o código:
Private Sub SomarChequeDiaCC()
Dim i As Integer
Dim Soma As Single = 0
Dim dia As Date = Date.Now.Date
For i = 0 To listChequeCC.Items.Count - 1
If listChequeCC.Items(i).Text = dia Then
Soma += CDec(listChequeCC.Items(i).SubItems(3).Text)
End If
Next
txtValorChequeCC.Text = CDec(Soma)
End Sub
Gostaria de usar o mesmo campo texto para mostrar os valores dentro do mês corrente. Ai que mora o perigo, dá erro. Uso o seguinte código:
Private Sub SomarChequeMesCC()
Dim i As Integer
Dim Soma As Single = 0
Dim mes As Integer = Date.Now.Month.ToString
For i = 0 To listChequeCC.Items.Count - 1
If listChequeCC.Items(i).ToString = mes.ToString Then
Soma += CDec(listChequeCC.Items(i).SubItems(3).Text)
End If
Next
txtValorChequeCC.Text = CDec(Soma)
End Sub
A linha: Dim mes as date = date.now.month retorna o mês correramente, mas não consigo formular o if para que o programa me dê o retorno esperado.
Desde já agradeço.
Um abraço
Tenho um campo texto que mostra total da coluna Valor de um listview. Uso o seguinte código:
Private Sub SomarChequeCC()
Dim i As Integer
Dim Soma As Single = 0
For i = 0 To listChequeCC.Items.Count - 1
Soma += CDec(listChequeCC.Items(i).SubItems(3).Text)
Next
txtValorChequeCC.Text = CDec(Soma)
End Sub
o Mesmo campo texto também é usado para mostrar o valor cadastrado no dia corrente. Segue o código:
Private Sub SomarChequeDiaCC()
Dim i As Integer
Dim Soma As Single = 0
Dim dia As Date = Date.Now.Date
For i = 0 To listChequeCC.Items.Count - 1
If listChequeCC.Items(i).Text = dia Then
Soma += CDec(listChequeCC.Items(i).SubItems(3).Text)
End If
Next
txtValorChequeCC.Text = CDec(Soma)
End Sub
Gostaria de usar o mesmo campo texto para mostrar os valores dentro do mês corrente. Ai que mora o perigo, dá erro. Uso o seguinte código:
Private Sub SomarChequeMesCC()
Dim i As Integer
Dim Soma As Single = 0
Dim mes As Integer = Date.Now.Month.ToString
For i = 0 To listChequeCC.Items.Count - 1
If listChequeCC.Items(i).ToString = mes.ToString Then
Soma += CDec(listChequeCC.Items(i).SubItems(3).Text)
End If
Next
txtValorChequeCC.Text = CDec(Soma)
End Sub
A linha: Dim mes as date = date.now.month retorna o mês correramente, mas não consigo formular o if para que o programa me dê o retorno esperado.
Desde já agradeço.
Um abraço
não teria q fazer um cast para string no listcheque?
Por quê você não faz essa busca diretamente no banco de dados?
Aà é só fazer um loop no seu dataReader e ir somando a variável [Ô]Soma[Ô]
Dim vMes As Byte [txt-color=#007100][ô]Variável que vai guardar o mês escolhido. Exemplo: Janeiro = 1, fevereiro = 2, etc...[/txt-color]
vMes = 4
[txt-color=#e80000][Ô]SELECT coluna_data, coluna_valor FROM sua_tabela WHERE MONTH(coluna_data) =[Ô][/txt-color] & vMes
Aà é só fazer um loop no seu dataReader e ir somando a variável [Ô]Soma[Ô]
Olá Pegudo
Muito obrigado pela dica, realmente e mais lógico filtrar os dados direto do banco de dados.
Fiz como você me indicou e estou tendo um problema. A primeira linha do banco com os dados filtrados não é somada ao total do mês.
O código ficou assim:
Private Sub SomarChequeMesCC()
Dim i As Integer
Dim Soma As Single = 0
Dim mes As String = Date.Now.Month.ToString
Dim banco As String = txtBancoContaCorrente.Text
Dim sqlCon As New SqlConnection(strCmd)
Dim strSql As String = [Ô]SELECT Data, valor FROM TB_Cheque where MONTH(Data) = [ô][Ô] & mes & [Ô][ô] and Banco = [ô][Ô] & banco & [Ô][ô][Ô]
Dim sqlCmd As New SqlCommand(strSql, sqlCon)
Dim dr As SqlDataReader
sqlCmd.Connection.Open()
dr = sqlCmd.ExecuteReader
dr.Read()
If dr.HasRows Then
While dr.Read = True
Soma += CDec(dr([Ô]Valor[Ô])).ToString
End While
End If
txtValorChequeCC.Text = CDec(Soma)
End Sub
Espero que possa me ajudar com essa questão.
Desde já agradeço
Muito obrigado pela dica, realmente e mais lógico filtrar os dados direto do banco de dados.
Fiz como você me indicou e estou tendo um problema. A primeira linha do banco com os dados filtrados não é somada ao total do mês.
O código ficou assim:
Private Sub SomarChequeMesCC()
Dim i As Integer
Dim Soma As Single = 0
Dim mes As String = Date.Now.Month.ToString
Dim banco As String = txtBancoContaCorrente.Text
Dim sqlCon As New SqlConnection(strCmd)
Dim strSql As String = [Ô]SELECT Data, valor FROM TB_Cheque where MONTH(Data) = [ô][Ô] & mes & [Ô][ô] and Banco = [ô][Ô] & banco & [Ô][ô][Ô]
Dim sqlCmd As New SqlCommand(strSql, sqlCon)
Dim dr As SqlDataReader
sqlCmd.Connection.Open()
dr = sqlCmd.ExecuteReader
dr.Read()
If dr.HasRows Then
While dr.Read = True
Soma += CDec(dr([Ô]Valor[Ô])).ToString
End While
End If
txtValorChequeCC.Text = CDec(Soma)
End Sub
Espero que possa me ajudar com essa questão.
Desde já agradeço
Citação:
Dim i As Integer
Dim Soma As Single = 0
Dim mes As String = Date.Now.Month.ToString
Dim banco As String = txtBancoContaCorrente.Text
Dim sqlCon As New SqlConnection(strCmd)
Dim strSql As String = [Ô]SELECT Data, valor FROM TB_Cheque where MONTH(Data) = [ô][Ô] & mes & [Ô][ô] and Banco = [ô][Ô] & banco & [Ô][ô][Ô]
Dim sqlCmd As New SqlCommand(strSql, sqlCon)
Dim dr As SqlDataReader
sqlCmd.Connection.Open()
dr = sqlCmd.ExecuteReader
Do While dr.Read
Soma += CDec(dr([Ô]Valor[Ô])).ToString
Loop
txtValorChequeCC.Text = CDec(Soma)
End Sub
Tenta usar assim!
Bom dia GUIMORAES123
Já tentei. Acontece a mesma coisa, a primeira referência filtrada não entra na soma.
Já tentei com DO WHILE, UNTIL, WHILE. e o resultado e sempre o mesmo, não soma a primeira referência filtrada.
Estou tentando com FOR/NEXT mas ainda não sei como montar o código pára ler os dados filtrados,
Muito obrigado pela tentativa.
Já tentei. Acontece a mesma coisa, a primeira referência filtrada não entra na soma.
Já tentei com DO WHILE, UNTIL, WHILE. e o resultado e sempre o mesmo, não soma a primeira referência filtrada.
Estou tentando com FOR/NEXT mas ainda não sei como montar o código pára ler os dados filtrados,
Muito obrigado pela tentativa.
Muito obrigado pelas dicas dos amigos PEGUDO e GUIMORAES123
A ajuda de vocês foi fundamental para que conseguisse resolver o problema.
Estava fazendo Dr.Read duas vezes, ai morava o erro. Retirei a linha dr.Read e mantive a linha Do While dr.Read e funcionou perfeitamente.
O código ficou assim:
Valeu.
A ajuda de vocês foi fundamental para que conseguisse resolver o problema.
Estava fazendo Dr.Read duas vezes, ai morava o erro. Retirei a linha dr.Read e mantive a linha Do While dr.Read e funcionou perfeitamente.
O código ficou assim:
Private Sub SomarEncargoMesCC()
Dim Soma As Single = 0
Dim mes As String = Date.Now.Month.ToString
Dim banco As String = txtBancoContaCorrente.Text
Dim sqlCon As New SqlConnection(strCmd)
Dim strSql As String = [Ô]SELECT Valor FROM TB_Encargos where MONTH(Data) = [ô][Ô] & mes & [Ô][ô] and Banco = [ô][Ô] & banco & [Ô][ô][Ô]
Dim sqlCmd As New SqlCommand(strSql, sqlCon)
Dim dr As SqlDataReader
sqlCmd.Connection.Open()
dr = sqlCmd.ExecuteReader
Do While dr.Read()
Soma += CDec(dr([Ô]Valor[Ô])).ToString()
Loop
txtValorEncargosCC.Text = CDec(Soma)
End Sub
.Valeu.
Tópico encerrado , respostas não são mais permitidas