[ONLY EXPERT] LIVRO CAIXA - SALDOS
For wx = 1 To FlexGrid.Rows - 1
Me.FlexGrid.TextMatrix(wx, 4) = Format(TimeValue(Me.FlexGrid.TextMatrix(wx, 2)) - TimeValue(Me.FlexGrid.TextMatrix(wx, 3)), [Ô]HH:MM[Ô])
Next wx
Tenho essa Rotina para calcula de horas, substitua o calculo e o nome da Grid e os campo, e dara certo.
Leandro, eu fiz assim:
ai quando executo ele dar o erro Type Mismatch e quando debugo ele seleciona a linha:
Esse codigo que vc passou ele serve somente para calcular cada linha (col03 - col04 = col05) ou serve para pegar o saldo anterior conforme pedi?
O Calculo é mais ou menos assim:
no caso da linha do grid que tiver uma SAÃDA
[txt-color=#e80000]NOVO SALDO = SALDO ANTERIOR - SAIDA[/txt-color]
coluna05 = coluna05(anterior) - coluna04
no caso da linha do grid que tiver uma ENTRADA
[txt-color=#e80000]NOVO SALDO = SALDO ANTERIOR + ENTRADA[/txt-color]
coluna05 = coluna05(anterior) + coluna03
Private Sub FormatarGridEntrada()
With GridEntrada
.Clear
.Cols = 6
.Rows = 2
.ColWidth(0) = 0
.ColWidth(1) = 650
.ColWidth(2) = 3100
.ColWidth(3) = 1150
.ColWidth(4) = 1150
.ColWidth(5) = 1150
.TextMatrix(0, 1) = [Ô]HORA[Ô]
.TextMatrix(0, 2) = [Ô]DESCRIÇÃO[Ô]
.TextMatrix(0, 3) = [Ô]ENTRADA[Ô]
.TextMatrix(0, 4) = [Ô]SAÃDA[Ô]
.TextMatrix(0, 5) = [Ô]SALDO[Ô]
[ô]colocar os cabeçalho em negrito
Dim X As Integer
For X = 0 To .Cols - 1
.Col = X
.Row = 0
.CellFontBold = True
Next X
[ô]centralizar o titulo
Dim f As Integer
For f = 0 To .Cols - 1
.Row = 0
.Col = f
.CellAlignment = flexAlignCenterCenter
Next f
Do Until Rs.EOF
[ô]mudar a cor da coluna
Dim i As Integer
For i = 1 To .Rows - 1
.Row = i
.Col = 5: .CellBackColor = &HC0FFFF
Next
[ô]ROTINA QUE VC ME PASSOU
Dim Wx As Currency
For Wx = 1 To GridEntrada.Rows - 1
Me.GridEntrada.TextMatrix(Wx, 4) = CCur(Me.GridEntrada.TextMatrix(Wx, 2)) - CCur(Me.GridEntrada.TextMatrix(Wx, 3))
Next Wx
.Redraw = False
[ô]ALINHAMENTO
.ColAlignment(2) = 1
.Redraw = True
If Not IsNull(Rs!HORA_PARC) Then .TextMatrix(.Rows - 1, 1) = Format(Rs!HORA_PARC, [Ô]hh:mm[Ô])
If Not IsNull(Rs!CAMPO01) Then .TextMatrix(.Rows - 1, 2) = Rs!CAMPO01
If Not IsNull(Rs!CAMPO02) Then .TextMatrix(.Rows - 1, 3) = Format(Rs!CAMPO02, [Ô]##,##0.00[Ô])
If Not IsNull(Rs!CAMPO03) Then .TextMatrix(.Rows - 1, 4) = Format(Rs!CAMPO03, [Ô]##,##0.00[Ô])
If Not IsNull(Wx) Then .TextMatrix(.Rows - 1, 5) = Format(Wx, [Ô]##,##0.00[Ô])
Rs.MoveNext
.Rows = .Rows + 1
Loop
.Rows = .Rows - 1
End With
End Sub
ai quando executo ele dar o erro Type Mismatch e quando debugo ele seleciona a linha:
Me.GridEntrada.TextMatrix(Wx, 5) = CCur(Me.GridEntrada.TextMatrix(Wx, 3)) - CCur(Me.GridEntrada.TextMatrix(Wx, 4))
Esse codigo que vc passou ele serve somente para calcular cada linha (col03 - col04 = col05) ou serve para pegar o saldo anterior conforme pedi?
O Calculo é mais ou menos assim:
no caso da linha do grid que tiver uma SAÃDA
[txt-color=#e80000]NOVO SALDO = SALDO ANTERIOR - SAIDA[/txt-color]
coluna05 = coluna05(anterior) - coluna04
no caso da linha do grid que tiver uma ENTRADA
[txt-color=#e80000]NOVO SALDO = SALDO ANTERIOR + ENTRADA[/txt-color]
coluna05 = coluna05(anterior) + coluna03
dim entrada as curency
dim saidas as curency
dim saldo as curency
Set rs1=cnn.execute([Ô]Select * From Primeiratabela Order By Hora[Ô])
do while not rs1.eof
Set rs2=cnn.execute([Ô]Select valor From tabelaEntrada Where hora=[ô][Ô] & rs1!hora & [Ô][ô][Ô])
if not rs2.eof then
entrada=format(rs2!valor,[Ô]#,##0.00[Ô])
else
entrada=0
endif
Set rs2=cnn.execute([Ô]Select valor From tabelasaida Where hora=[ô][Ô] & rs1!hora & [Ô][ô][Ô])
if not rs2.eof then
saida=format(rs2!valor,[Ô]#,##0.00[Ô])
else
saida=0
endif
saldo=entrada-saida
preenchegrid rs1!hora,rs1!descricao,Entrada,Saida,Saldo
rs1.movenext
loop
rs1.close
set rs1=nothing
Function preencheGrid(Hora,Descricao,Entrada,Saldo)
aqui vc coloca o código do grid
end function
dim saidas as curency
dim saldo as curency
Set rs1=cnn.execute([Ô]Select * From Primeiratabela Order By Hora[Ô])
do while not rs1.eof
Set rs2=cnn.execute([Ô]Select valor From tabelaEntrada Where hora=[ô][Ô] & rs1!hora & [Ô][ô][Ô])
if not rs2.eof then
entrada=format(rs2!valor,[Ô]#,##0.00[Ô])
else
entrada=0
endif
Set rs2=cnn.execute([Ô]Select valor From tabelasaida Where hora=[ô][Ô] & rs1!hora & [Ô][ô][Ô])
if not rs2.eof then
saida=format(rs2!valor,[Ô]#,##0.00[Ô])
else
saida=0
endif
saldo=entrada-saida
preenchegrid rs1!hora,rs1!descricao,Entrada,Saida,Saldo
rs1.movenext
loop
rs1.close
set rs1=nothing
Function preencheGrid(Hora,Descricao,Entrada,Saldo)
aqui vc coloca o código do grid
end function
Me corrija se estive errado...
esse calculo que vc fez ai vai subtrair a entrada pela saida e dar o resultado...
Mas o que quero na verdade é pegar o saldo(coluna05) da linha do grid anterior e usar ela no calculo... ser for entrada é uma calculo e ser for saida é outro calculo... conforme falei acima:
O Calculo é mais ou menos assim:
no caso da linha do grid que tiver uma SAÃDA
NOVO SALDO = SALDO ANTERIOR - SAIDA
coluna05 = coluna05(anterior) - coluna04
no caso da linha do grid que tiver uma ENTRADA
NOVO SALDO = SALDO ANTERIOR + ENTRADA
coluna05 = coluna05(anterior) + coluna03
esse calculo que vc fez ai vai subtrair a entrada pela saida e dar o resultado...
Mas o que quero na verdade é pegar o saldo(coluna05) da linha do grid anterior e usar ela no calculo... ser for entrada é uma calculo e ser for saida é outro calculo... conforme falei acima:
O Calculo é mais ou menos assim:
no caso da linha do grid que tiver uma SAÃDA
NOVO SALDO = SALDO ANTERIOR - SAIDA
coluna05 = coluna05(anterior) - coluna04
no caso da linha do grid que tiver uma ENTRADA
NOVO SALDO = SALDO ANTERIOR + ENTRADA
coluna05 = coluna05(anterior) + coluna03
Alguem?
Alguem?
companheiro,
acho que resolveria vc. erguer o recordset, montar o grid, dai voce roda o recordset do inicio ao fim e chega no saldo... blz
acho que resolveria vc. erguer o recordset, montar o grid, dai voce roda o recordset do inicio ao fim e chega no saldo... blz
Private Sub FormatarGridEntrada()
Dim m_Saldo As Currency
Dim X As Integer
Dim i As Integer
With GridEntrada
.Clear
.Cols = 6
.Rows = 2
.ColWidth(0) = 0
.ColWidth(1) = 650
.ColWidth(2) = 3100
.ColWidth(3) = 1150
.ColWidth(4) = 1150
.ColWidth(5) = 1150
.TextMatrix(0, 1) = [Ô]HORA[Ô]
.TextMatrix(0, 2) = [Ô]DESCRIÇÃO[Ô]
.TextMatrix(0, 3) = [Ô]ENTRADA[Ô]
.TextMatrix(0, 4) = [Ô]SAÃDA[Ô]
.TextMatrix(0, 5) = [Ô]SALDO[Ô]
.Row = 0
[ô]colocar os cabeçalho em negrito / Centralizado
For X = 0 To .Cols - 1
.Col = X
.CellFontBold = True
.CellAlignment = flexAlignCenterCenter
Next
.Redraw = False
m_Saldo = 0
Do Until Rs.EOF
If Not IsNull(Rs!HORA_PARC) Then .TextMatrix(.Rows - 1, 1) = Format(Rs!HORA_PARC, [Ô]hh:mm[Ô])
If Not IsNull(Rs!CAMPO01) Then .TextMatrix(.Rows - 1, 2) = Rs!CAMPO01
If Not IsNull(Rs!CAMPO02) Then .TextMatrix(.Rows - 1, 3) = Format(Rs!CAMPO02, [Ô]##,##0.00[Ô])
If Not IsNull(Rs!CAMPO03) Then .TextMatrix(.Rows - 1, 4) = Format(Rs!CAMPO03, [Ô]##,##0.00[Ô])
m_Saldo = m_Saldo + iif(IsNull(Rs!CAMPO02),0,Rs!CAMPO02) - iif(IsNull(Rs!CAMPO03),0,Rs!CAMPO03)
.TextMatrix(.Rows - 1, 5) = Format(m_Saldo, [Ô]##,##0.00[Ô])
Rs.MoveNext
.Rows = .Rows + 1
Loop
.Rows = .Rows - 1
[ô]mudar a cor da coluna
.Col = 5
For x = 1 To .Rows
.Row = x
.CellBackColor = &HC0FFFF
Next
[ô]ALINHAMENTO
.ColAlignment(2) = 1
.Redraw = True
End With
End Sub
RCMRO, leu meus pensamentos...vlw cara!
Tópico encerrado , respostas não são mais permitidas