SOMAR O VALOR TOTAL EM UM MSFLEXGRID

RICKSOUSA 15/02/2010 22:04:26
#334453
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????
RICKSOUSA 16/02/2010 00:10:02
#334458
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 .
ROBIU 16/02/2010 08:08:37
#334464
Resposta escolhida
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
RICKSOUSA 16/02/2010 09:19:45
#334466
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....
ROBIU 16/02/2010 10:02:30
#334474
Esta linha causa o erro:
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

RICKSOUSA 16/02/2010 10:30:08
#334477
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!!!
DANIKULL 16/02/2010 10:33:25
#334478
Rick, bom dia.

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