FAZER CALCULO DENTRO DO FLEXGRID

USUARIO.EXCLUIDOS 01/03/2005 15:54:58
#70582
pessoal, como eu faço para fazer uma soma dentro do grid?
exemplo:
eu uma coluna preco e outra quantidade. como eu faço para pegar o valor que está na coluna preco e multiplicar pelo valor que está na coluna quantidade. depois mostrar o resultado em uma célula à  parte do grid.

como eu faço isso?
JADSON 01/03/2005 16:11:02
#70588
Rafa tenta o seguinte
Imaginando que o valor está na coluna 1, a quantidade na coluna 2 e o total na coluna 3.
seuflex.textmatrix(linha,3) = cdbl(seuflex.textmatrix(linha,1)) * cdbl(seuflex.textmatrix(linha,2))

linha é a linha onde vai ser calculado os valores.

Atenciosamente
Jadson Gois
TROVAM 01/03/2005 17:58:15
#70615
caso vc esteja pegando esses dados de um banco, faça essa conta quando vc estiver alimentando o grid:

ai fica da seguinte maneira:

grid.textmatrix(lin,3) = <campo do BD Preço> * <campo do BD quantidade>

Até mais...
USUARIO.EXCLUIDOS 03/03/2005 15:22:27
#70981
blzz.
mais me explica uma coisa.

na coluna total eu vou ter vários valores. e quero fazer a soma desses valores.
como faço para que o resultado dessa soma apareça na mesma coluna total na última linha?

como acontece no excel.

como faço isso?
PAULOHSV 03/03/2005 15:29:12
#70983
Resposta escolhida
Dim i As Integer
Dim aux As Double

For i = 1 To MSHFlexGrid1.Rows - 1
MSHFlexGrid1.Row = i
MSHFlexGrid1.Col = 1 'coluna que vc quer somar
aux = aux + MSHFlexGrid1.Text
label1.Caption = aux 'local onde vc quer exibir a soma
Next

onde MSHFlexGrid1 vc coloca o nome do seu grid
USUARIO.EXCLUIDOS 03/03/2005 15:37:27
#70986
meu grid tem 10 linhas e 3 colunas.

está dando erro nessa linha do código que vc me passou:

aux = aux + MSFlexGrid1.Text

estou fazendo esse código:

MSFlexGrid1.TextMatrix(1, 0) = 1
MSFlexGrid1.TextMatrix(1, 1) = 2

MSFlexGrid1.TextMatrix(2, 0) = 3
MSFlexGrid1.TextMatrix(2, 1) = 4
MSFlexGrid1.TextMatrix(1, 2) = CDbl(MSFlexGrid1.TextMatrix(1, 0)) * CDbl(MSFlexGrid1.TextMatrix(1, 1))

Dim i As Integer
Dim aux As Double

For i = 1 To MSFlexGrid1.Rows - 1
MSFlexGrid1.Row = i
MSFlexGrid1.Col = 1 'coluna que vc quer somar
aux = aux + MSFlexGrid1.Text
Label2.Caption = aux 'local onde vc quer exibir a soma
Next

me ajude,

valeu
PAULOHSV 03/03/2005 15:41:30
#70987
coloque um valor para a variavel aux tipo 0 antes de vc começar o loop
PAULOHSV 03/03/2005 15:44:33
#70989
Pelo que tive analizando tbm o seu i tem que ser igual a 2 pois vc começa a distribuir os dados apartir da linha dois
USUARIO.EXCLUIDOS 03/03/2005 15:51:13
#70990
mudei. e criei a variável como vc falou.
ele dá outro erro. que é o famoso type mismatch.

olha como fiz o código:

MSFlexGrid1.TextMatrix(1, 0) = 1
MSFlexGrid1.TextMatrix(2, 0) = 2

'MSFlexGrid1.TextMatrix(2, 0) = 3
'MSFlexGrid1.TextMatrix(2, 1) = 4
'MSFlexGrid1.TextMatrix(1, 2) = CDbl(MSFlexGrid1.TextMatrix(1, 0)) * CDbl(MSFlexGrid1.TextMatrix(1, 1))

Dim i As Integer
Dim aux As Double
aux = 0
For i = 1 To MSFlexGrid1.Rows - 1
MSFlexGrid1.Row = i
MSFlexGrid1.Col = 0 'coluna que vc quer somar
aux = aux + MSFlexGrid1.Text
Label2.Caption = aux 'local onde vc quer exibir a soma
Next

corrija, por favor o que estiver errado.

valeu
PAULOHSV 03/03/2005 15:54:54
#70992
Ta dando o erro na hora que vc atribui o valor a variavel aux?

Tente assim:

MSFlexGrid1.TextMatrix(1, 0) = 1
MSFlexGrid1.TextMatrix(2, 0) = 2

'MSFlexGrid1.TextMatrix(2, 0) = 3
'MSFlexGrid1.TextMatrix(2, 1) = 4
'MSFlexGrid1.TextMatrix(1, 2) = CDbl(MSFlexGrid1.TextMatrix(1, 0)) * CDbl(MSFlexGrid1.TextMatrix(1, 1))

Dim i As Integer
Dim aux As Double

For i = 2 To MSFlexGrid1.Rows - 1
MSFlexGrid1.Row = i
MSFlexGrid1.Col = 0 'coluna que vc quer somar
aux = aux + MSFlexGrid1.Text
Label2.Caption = aux 'local onde vc quer exibir a soma
Next
USUARIO.EXCLUIDOS 03/03/2005 16:04:30
#70994
continua dando erro nessa linha:
aux = aux + MSFlexGrid1.Text

mesmo eu atribuindo 0 ao aux.

quando i era igual 1 ele fazia a soma e jogava na variável aux.

só que ele dava o mesmo erro.

o que poder ser?

vc tem algum exemplo que funcione? ou vc pode corrigir pra mim?

valeu
Página 1 de 2 [14 registro(s)]
Tópico encerrado , respostas não são mais permitidas