AJUDA SOMA MSFLEXGRID
Boa tarde. Pessoal preciso de uma ajudinha de você.
Já tem um bom tempo que eu estou tentando quebrar a cabeça aqui com o seguinte probleminha.
Tenho um FlexGrid aqui no Vb6 que é carregado com dados de estoque. Por exemplo, Colunas: Código, Nome, Estoque1, Estoque2 e EstoqueGeral.
Queria saber se tem como somar a coluna Estoque1 e Estoque2 e colocar o resultado na Coluna EstoqueGeral?
Como poderia fazer? Alguém poderia citar algum exemplo?
Grato
Já tem um bom tempo que eu estou tentando quebrar a cabeça aqui com o seguinte probleminha.
Tenho um FlexGrid aqui no Vb6 que é carregado com dados de estoque. Por exemplo, Colunas: Código, Nome, Estoque1, Estoque2 e EstoqueGeral.
Queria saber se tem como somar a coluna Estoque1 e Estoque2 e colocar o resultado na Coluna EstoqueGeral?
Como poderia fazer? Alguém poderia citar algum exemplo?
Grato
With MSflexgrid1
.Textmatrix(linha,coluna_estoque_geral) = CCur(.TextMatrix(Linha, Coluna_estoque1)) + CCur(.TextMatrix(linha, coluna_estoque2))
End With
no exemplo acima estou levando em consideração a soma na mesma linha, ex
....estoque1 - estoque2 - estoquegeral
10 13 23
12 18 30
veja esse exemplo....
Set BancoDeDados = OpenDatabase(App.Path & [Ô]olão.MDB[Ô], False)
Set TBSaldo = BancoDeDados.OpenRecordset([Ô]select Matricula,Nome,Saldo from Saldo Where Data >= #[Ô] & Format(DataInicial, [Ô]mm/dd/yy[Ô]) & [Ô]# and data<= #[Ô] & Format(DataFinal, [Ô]mm/dd/yy[Ô]) & [Ô]# order by Saldo asc[Ô])
If Not TBSaldo.EOF Then
With MSFlexGrid1
.Rows = 1
.Cols = 4
.ColWidth(0) = 500
.ColWidth(1) = 800
.ColWidth(2) = 3000
.ColWidth(3) = 700
.TextMatrix(0, 0) = [Ô]Lugar[Ô]
.TextMatrix(0, 1) = [Ô]Matricula[Ô]
.TextMatrix(0, 2) = [Ô]Nome[Ô]
.TextMatrix(0, 3) = [Ô]Valor[Ô]
End With
i = 1
Do While Not TBSaldo.EOF
With MSFlexGrid1
.Rows = i + 1
.ColAlignment(0) = flexAlignCenterCenter [ô] alinha coluna
.TextMatrix(i, 0) = i - 0 [ô] autonumeração colocar zero para poder começar com 1
.ColAlignment(1) = flexAlignCenterCenter
.TextMatrix(i, 1) = TBSaldo(0)
.ColAlignment(2) = flexAlignLeftCenter
.TextMatrix(i, 2) = TBSaldo(1)
.ColAlignment(3) = flexAlignCenterCenter
.TextMatrix(i, 3) = TBSaldo(2)
End With
i = i + 1
SomaColuna = SomaColuna + TBSaldo(2)
TBSaldo.MoveNext
Loop
[ô] Textbox com o total da coluna
Text1.Text = SomaColuna
Ou :
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
OUTRO EXEMPLO:
Private Sub Somatoria(vFlexGrid As MSFlexGrid, vRowPos As Long, vColPos As Long, _
vSumColFrom As Long, vSumColTo As Long, vSumRowFrom As Long, vSumRowTo As Long)
Dim x As Long, y As Long
Dim soma As Currency
With vFlexGrid
For x = vSumColFrom To vSumColTo
.Col = x
For y = vSumRowFrom To vSumRowTo
.Row = y
soma = soma + CCur(.Text)
Next
Next
.Row = vRowPos
.Col = vColPos
.Text = soma
End With
End Sub
Set BancoDeDados = OpenDatabase(App.Path & [Ô]olão.MDB[Ô], False)
Set TBSaldo = BancoDeDados.OpenRecordset([Ô]select Matricula,Nome,Saldo from Saldo Where Data >= #[Ô] & Format(DataInicial, [Ô]mm/dd/yy[Ô]) & [Ô]# and data<= #[Ô] & Format(DataFinal, [Ô]mm/dd/yy[Ô]) & [Ô]# order by Saldo asc[Ô])
If Not TBSaldo.EOF Then
With MSFlexGrid1
.Rows = 1
.Cols = 4
.ColWidth(0) = 500
.ColWidth(1) = 800
.ColWidth(2) = 3000
.ColWidth(3) = 700
.TextMatrix(0, 0) = [Ô]Lugar[Ô]
.TextMatrix(0, 1) = [Ô]Matricula[Ô]
.TextMatrix(0, 2) = [Ô]Nome[Ô]
.TextMatrix(0, 3) = [Ô]Valor[Ô]
End With
i = 1
Do While Not TBSaldo.EOF
With MSFlexGrid1
.Rows = i + 1
.ColAlignment(0) = flexAlignCenterCenter [ô] alinha coluna
.TextMatrix(i, 0) = i - 0 [ô] autonumeração colocar zero para poder começar com 1
.ColAlignment(1) = flexAlignCenterCenter
.TextMatrix(i, 1) = TBSaldo(0)
.ColAlignment(2) = flexAlignLeftCenter
.TextMatrix(i, 2) = TBSaldo(1)
.ColAlignment(3) = flexAlignCenterCenter
.TextMatrix(i, 3) = TBSaldo(2)
End With
i = i + 1
SomaColuna = SomaColuna + TBSaldo(2)
TBSaldo.MoveNext
Loop
[ô] Textbox com o total da coluna
Text1.Text = SomaColuna
Ou :
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
OUTRO EXEMPLO:
Private Sub Somatoria(vFlexGrid As MSFlexGrid, vRowPos As Long, vColPos As Long, _
vSumColFrom As Long, vSumColTo As Long, vSumRowFrom As Long, vSumRowTo As Long)
Dim x As Long, y As Long
Dim soma As Currency
With vFlexGrid
For x = vSumColFrom To vSumColTo
.Col = x
For y = vSumRowFrom To vSumRowTo
.Row = y
soma = soma + CCur(.Text)
Next
Next
.Row = vRowPos
.Col = vColPos
.Text = soma
End With
End Sub
Faça seu login para responder