SOMAR O VALOR TOTAL EM UM MSFLEXGRID
eu tenho um textbox que mostra quantidade de itens que tem no flexgrid e outro textbox que mostra o valor total que tem no flexgrid.
o flexgrid tem tres colunas, codigo, acessorios, valor....
eu quero fazer o seguinte ex.
vamos supor que tenha 4 acessorios
ai vai mostrar os codigo de cada um assim:
1 - memoria - 50,00
2 - hd - 30,00
3 - processador - 100,00
4 - cooler - 25,00
4 itens valor total 205,00
como eu faço para fazer essa programação????
o flexgrid tem tres colunas, codigo, acessorios, valor....
eu quero fazer o seguinte ex.
vamos supor que tenha 4 acessorios
ai vai mostrar os codigo de cada um assim:
1 - memoria - 50,00
2 - hd - 30,00
3 - processador - 100,00
4 - cooler - 25,00
4 itens valor total 205,00
como eu faço para fazer essa programação????
somar a quantidade de itens na flexgrid eu consegui, agora como eu faço para somar os valores da coluna 2 do flexgrid???
ex.
1 - memoria - 50,00
2 - hd - 30,00
3 - processador - 100,00
4 - cooler - 25,00
Valor Total = 205,00
pegar os valores que tem nas linhas e mostrar o valor total em um textbox .
ex.
1 - memoria - 50,00
2 - hd - 30,00
3 - processador - 100,00
4 - cooler - 25,00
Valor Total = 205,00
pegar os valores que tem nas linhas e mostrar o valor total em um textbox .
Coloque esse código logo após carregar a grid, para que seja atualizado a cada exclussão, inclusão, atualização. Aqui vamos usar um for.
Dim i as integer
TxtValor.Text = 0 [ô]Aqui adiciona um valor inicial a textbox para não ocorrer erro na soma
For i = 1 To HGrid.Rows - 1 [ô]Percorre por todas linhas da grid, menos o cabeçalho (Row=0)
TxtValor.Text = CDec(TxtValor.Text) + CDec(HGrid.TextMatrix(i, 2)) [ô] soma o valor que há na textbox com o valor da linha
Next
fera deu erro nessa linha:
txtvalor.Text = CDec(txtvalor.Text) + CDec(MSflex.TextMatrix(i, 2)) [ô] soma o valor que há na textbox com o valor da linha
erro type mismatch
ele ta pegando o valor do txtvalor.text e tbm no CDec(txtvalor.text) mais no MSflex.textmatrix(i,2)) ele mostra que ta vazia [Ô][Ô]
eu não entendi....
o código do botão + é esse:
With MSflex
.TextMatrix(.Rows - 1, 0) = codigo.Caption [ô]nessa linha ele pega o valor do codigo.caption e mostra na coluna codigo do MSflex
.TextMatrix(.Rows - 1, 1) = txtaces.Text [ô]aqui ele mostra o conteudo do textbox acessorios/serviçor
.TextMatrix(.Rows - 1, 2) = txtvalor.Text [ô]aqui ele mostra o valor que tem no textbox valor
.Rows = .Rows + 1 [ô]aqui ele add mais uma linha para eu ir colocando mais itens no MSflex
End With
txtvalor.Text = 0 [ô]Aqui adiciona um valor inicial a textbox para não ocorrer erro na soma [ô]aqui foi a resposta do amigo ai
For i = 1 To MSflex.Rows - 1 [ô]Percorre por todas linhas da grid, menos o cabeçalho (Row=0)
txtvalor.Text = CDec(txtvalor.Text) + CDec(MSflex.TextMatrix(i, 2)) [ô] soma o valor que há na textbox com o valor da linha
Next
codigo.Caption = Val(codigo.Caption) + 1 [ô]aqui depois que ele add o item no MSflex ele soma o valor do codigo + 1
txtQitens.Text = MSflex.Rows - 1 [ô]aqui ele tira o cabeçalho que mostra codigo, acessorios/serviços, valor no MSflex
txtQitens.Text = Val(txtQitens.Text) - 1 [ô]aqui ele ve quantas linhas tem menos a linha do cabeçalho que é a fixa e tira a ultima linha que vai ser em branco
mais eu não to conseguindo somar oq tem na coluna valor do MSflex para mostra o total no textbox ao lado do Q.Itens
alguem pode me dar uma força....
txtvalor.Text = CDec(txtvalor.Text) + CDec(MSflex.TextMatrix(i, 2)) [ô] soma o valor que há na textbox com o valor da linha
erro type mismatch
ele ta pegando o valor do txtvalor.text e tbm no CDec(txtvalor.text) mais no MSflex.textmatrix(i,2)) ele mostra que ta vazia [Ô][Ô]
eu não entendi....
o código do botão + é esse:
With MSflex
.TextMatrix(.Rows - 1, 0) = codigo.Caption [ô]nessa linha ele pega o valor do codigo.caption e mostra na coluna codigo do MSflex
.TextMatrix(.Rows - 1, 1) = txtaces.Text [ô]aqui ele mostra o conteudo do textbox acessorios/serviçor
.TextMatrix(.Rows - 1, 2) = txtvalor.Text [ô]aqui ele mostra o valor que tem no textbox valor
.Rows = .Rows + 1 [ô]aqui ele add mais uma linha para eu ir colocando mais itens no MSflex
End With
txtvalor.Text = 0 [ô]Aqui adiciona um valor inicial a textbox para não ocorrer erro na soma [ô]aqui foi a resposta do amigo ai
For i = 1 To MSflex.Rows - 1 [ô]Percorre por todas linhas da grid, menos o cabeçalho (Row=0)
txtvalor.Text = CDec(txtvalor.Text) + CDec(MSflex.TextMatrix(i, 2)) [ô] soma o valor que há na textbox com o valor da linha
Next
codigo.Caption = Val(codigo.Caption) + 1 [ô]aqui depois que ele add o item no MSflex ele soma o valor do codigo + 1
txtQitens.Text = MSflex.Rows - 1 [ô]aqui ele tira o cabeçalho que mostra codigo, acessorios/serviços, valor no MSflex
txtQitens.Text = Val(txtQitens.Text) - 1 [ô]aqui ele ve quantas linhas tem menos a linha do cabeçalho que é a fixa e tira a ultima linha que vai ser em branco
mais eu não to conseguindo somar oq tem na coluna valor do MSflex para mostra o total no textbox ao lado do Q.Itens
alguem pode me dar uma força....
Esta linha causa o erro:
No seu caso, vamos mudar esta linha
Citação:.Rows = .Rows + 1 [ô]aqui ele add mais uma linha para eu ir colocando mais itens no MSflex
No seu caso, vamos mudar esta linha
Citação:For i = 1 To HGrid.Rows - 1 [ô]Percorre por todas linhas da grid, menos o cabeçalho (Row=0)
Dim i as integer
TxtValor.Text = 0 [ô]Aqui adiciona um valor inicial a textbox para não ocorrer erro na soma
For i = 1 To HGrid.Rows - 2 [ô]Percorre por todas linhas da grid, menos o cabeçalho (Row=0)
TxtValor.Text = CDec(TxtValor.Text) + CDec(HGrid.TextMatrix(i, 2)) [ô] soma o valor que há na textbox com o valor da linha
Next
valeu amigão agora funcionou!
eu só mudei uma coisa para funcionar perfeito
TxtValor.Text = 0 [ô]Aqui adiciona um valor inicial a textbox para não ocorrer erro na soma
no lugar do 0 eu coloquei assim
txtvalor.Text = Format(CCur(txtVtotal.Text), [Ô]currency[Ô]) [ô]Aqui adiciona um valor inicial a textbox para não ocorrer erro na soma
ai ele pega o valor inicial que esta no textbox valor total la em baixo como esta na imagem, e no valor total fiz assim
txtVtotal.Text = Format(CCur(CDec(txtvalor.Text) + CDec(MSflex.TextMatrix(i, 2))), [Ô]currency[Ô]) [ô] soma o valor que há na textbox com o valor da linha
ai ele vai somando e ficou do modo que eu queria muito obrigado!!!
eu só mudei uma coisa para funcionar perfeito
TxtValor.Text = 0 [ô]Aqui adiciona um valor inicial a textbox para não ocorrer erro na soma
no lugar do 0 eu coloquei assim
txtvalor.Text = Format(CCur(txtVtotal.Text), [Ô]currency[Ô]) [ô]Aqui adiciona um valor inicial a textbox para não ocorrer erro na soma
ai ele pega o valor inicial que esta no textbox valor total la em baixo como esta na imagem, e no valor total fiz assim
txtVtotal.Text = Format(CCur(CDec(txtvalor.Text) + CDec(MSflex.TextMatrix(i, 2))), [Ô]currency[Ô]) [ô] soma o valor que há na textbox com o valor da linha
ai ele vai somando e ficou do modo que eu queria muito obrigado!!!
Rick, bom dia.
se este trecho esta dentro do botão +:
Não há necessidade você fazer um laço. Faça da seguinte forma:
Vá na Property do txtvalor chamada Locked, coloca valor igual a True, isto irá bloquear a ediçao deste textbox e na Property Text do textbox coloque 0,0, para sempre iniciar com valor 0, agora coloque o seguinte código para somar o valor:
Obs.: Se nem uma linha do Grid for removida, este código servirá para voce sem problemas, ok???
se este trecho esta dentro do botão +:
Citação:
txtvalor.Text = 0 [ô]Aqui adiciona um valor inicial a textbox para não ocorrer erro na soma [ô]aqui foi a resposta do amigo ai
For i = 1 To MSflex.Rows - 1 [ô]Percorre por todas linhas da grid, menos o cabeçalho (Row=0)
txtvalor.Text = CDec(txtvalor.Text) + CDec(MSflex.TextMatrix(i, 2)) [ô] soma o valor que há na textbox com o valor da linha
Next
Não há necessidade você fazer um laço. Faça da seguinte forma:
Vá na Property do txtvalor chamada Locked, coloca valor igual a True, isto irá bloquear a ediçao deste textbox e na Property Text do textbox coloque 0,0, para sempre iniciar com valor 0, agora coloque o seguinte código para somar o valor:
txtvalor.Text = CDbl(txtvalor.Text) + CDbl(MSFlex.TextMatrix((MSFlex.Rows - 1) - 1, 2))
Obs.: Se nem uma linha do Grid for removida, este código servirá para voce sem problemas, ok???
Tópico encerrado , respostas não são mais permitidas