[ONLY EXPERT] LIVRO CAIXA - SALDOS
Estou fazendo um livro caixa.
A ideia é a seguinte:
Tenho 3 forma de entrar dinheiro no caixa e 1 forma de sair dinheiro.
usei o comando UNION para unir as 4 tabelas.
a ideia seria essa:
HORA | DESCRIÇÃO | ENTRADA | SAIDA | SALDO |
08:00 | Joao | 100,00 | 0,00 | 100,00 |
08:10 | Maria | 80,00 | 0,00 | 180,00 |
08:25 | Sabao em pó | 0,00 | 2,00 | 178,00 |
08:30 | Pedro | 30,00 | 0,00 | 208,00 |
09:00 | Açucar | 0,00 | 9,00 | 199,00 |
Resumindo:
Todas as entradas ficarão na coluna 3
Todas as Saidas ficarão na coluna 4
é o Saldo ficará na coluna 5 (saldo = saldo anterior - saida)
[txt-color=#e80000]Conseguir Unir as 4 tabelas no flexgrid
Conseguir colocar as entradas na coluna 3
Conseguir colocar as saidas na coluna 4[/txt-color]
agora fiquei prezo na parte de calcular o saldo anterior e dar o novo saldo... ou seja:
o Saldo começa em 0 e a medida que for entrando dinheiro ele vai crescendo e a medida q vai saindo ele vai diminuindo, conforme exemplo que dei acima:
Achei melhor anexa o projeto ao topico ai...
Cadastrei algumas entradas e saidas para ficar mais facil.
A ideia é a seguinte:
Tenho 3 forma de entrar dinheiro no caixa e 1 forma de sair dinheiro.
usei o comando UNION para unir as 4 tabelas.
a ideia seria essa:
HORA | DESCRIÇÃO | ENTRADA | SAIDA | SALDO |
08:00 | Joao | 100,00 | 0,00 | 100,00 |
08:10 | Maria | 80,00 | 0,00 | 180,00 |
08:25 | Sabao em pó | 0,00 | 2,00 | 178,00 |
08:30 | Pedro | 30,00 | 0,00 | 208,00 |
09:00 | Açucar | 0,00 | 9,00 | 199,00 |
Resumindo:
Todas as entradas ficarão na coluna 3
Todas as Saidas ficarão na coluna 4
é o Saldo ficará na coluna 5 (saldo = saldo anterior - saida)
[txt-color=#e80000]Conseguir Unir as 4 tabelas no flexgrid
Conseguir colocar as entradas na coluna 3
Conseguir colocar as saidas na coluna 4[/txt-color]
agora fiquei prezo na parte de calcular o saldo anterior e dar o novo saldo... ou seja:
o Saldo começa em 0 e a medida que for entrando dinheiro ele vai crescendo e a medida q vai saindo ele vai diminuindo, conforme exemplo que dei acima:
Achei melhor anexa o projeto ao topico ai...
Cadastrei algumas entradas e saidas para ficar mais facil.
Poste a descrição da ESTRUTURA das tabelas no tópico.
código para unir as tabelas:
Código para montar o grid:
Obs:
Fiz uma tentativa de SUBTRAIR o CAMPO02 com o CAMPO03 na propria sql
mas não é o que quero!
Eh como descrevi acima!
Call ABRIR_BD_SEM_DATA1
SQL = [Ô]SELECT PARCELAS.Hora AS HORA_PARC, Cliente.NOME AS CAMPO01, PARCELAS.VALOR_FINAL AS CAMPO02, [ô]0[ô] AS CAMPO03, (CCUR(CAMPO02)-CCUR(CAMPO03)) AS CAMPO04, PARCELAS.PAGAMENTO, PEDIDOS.Cod_Pedido, PEDIDOS.COD_CLIENTE, Cliente.CODIGO FROM CLIENTE INNER JOIN (PARCELAS INNER JOIN PEDIDOS ON PARCELAS.COD_PEDIDO = PEDIDOS.COD_PEDIDO) ON CLIENTE.CODIGO = PEDIDOS.COD_CLIENTE WHERE PARCELAS.PAGAMENTO = #[Ô] & Format(mskData, [Ô]mm/dd/yy[Ô]) & [Ô]# ORDER BY HORA[Ô] & _
[Ô] UNION [Ô] & _
[Ô]SELECT PARCELAS.Hora AS HORA_PARC, Cliente.NOME AS CAMPO01, PARCELAS.VALOR_FINAL AS CAMPO02, [ô]0[ô] AS CAMPO03, (CCUR(CAMPO02)-CCUR(CAMPO03)) AS CAMPO04, PARCELAS.PAGAMENTO, OS.Cod_OS, OS.COD_CLIENTE, Cliente.CODIGO FROM CLIENTE INNER JOIN (PARCELAS INNER JOIN OS ON PARCELAS.COD_OS = OS.COD_OS) ON CLIENTE.CODIGO = OS.COD_CLIENTE WHERE PARCELAS.PAGAMENTO = #[Ô] & Format(mskData, [Ô]mm/dd/yy[Ô]) & [Ô]#[Ô] & _
[Ô] UNION [Ô] & _
[Ô]SELECT HORA AS HORA_PARC, DESCRICAO AS CAMPO01, VALOR AS CAMPO02, [ô]0[ô] AS CAMPO03, (CCUR(CAMPO02)-CCUR(CAMPO03)) AS CAMPO04, COD_HAVER, SETOR, DATA, CODIGO FROM CAIXA_ENTRADA WHERE DATA = #[Ô] & Format(mskData, [Ô]mm/dd/yy[Ô]) & [Ô]#[Ô] & _
[Ô] UNION [Ô] & _
[Ô]SELECT CAIXA_SAIDA.HORA AS HORA_PARC, CAIXA_SAIDA.DESCRICAO AS CAMPO01, [ô]0[ô] AS CAMPO02, CAIXA_SAIDA.VALOR AS CAMPO03, (CCUR(CAMPO02)-CCUR(CAMPO03)) AS CAMPO04, COD_HAVER, SETOR, DATA, CODIGO FROM CAIXA_SAIDA WHERE DATA = #[Ô] & Format(mskData, [Ô]mm/dd/yy[Ô]) & [Ô]#[Ô]
Set Rs = BD.OpenRecordset(SQL)
FormatarGridEntrada
Código para montar o grid:
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
.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(Rs!CAMPO04) Then .TextMatrix(.Rows - 1, 5) = Format(Rs!CAMPO04, [Ô]##,##0.00[Ô])
Rs.MoveNext
.Rows = .Rows + 1
Loop
.Rows = .Rows - 1
End With
End Sub
Obs:
Fiz uma tentativa de SUBTRAIR o CAMPO02 com o CAMPO03 na propria sql
(CCUR(CAMPO02)-CCUR(CAMPO03)) AS CAMPO04
mas não é o que quero!
Eh como descrevi acima!
alguem?
vc pode fazer o seguinte....
1 usar uma tabela com estrutura diferente criando um campo adicional (onde vc vai informar se é débito ou credito) OU
pode usar esta sua tabela mesmo usando valores negativos para os débitos e totalizar o saldo com um sql
1 usar uma tabela com estrutura diferente criando um campo adicional (onde vc vai informar se é débito ou credito) OU
pode usar esta sua tabela mesmo usando valores negativos para os débitos e totalizar o saldo com um sql
mas pra isso teria q criar um campo a mais... adicionar dados nesse campo.... contar essas informação para usar-lo em calculo....
ou seja, uma volta enorme para um simples preenchimento de grid!
Mais alguem?
ou seja, uma volta enorme para um simples preenchimento de grid!
Mais alguem?
kra vc não entendeu....
eu disse.... vc tem DUAS opções....
uma é criar um campo extra.... SE vc se utilizar desta, vc não precisa chamar este campo extra para o seu grid... ele só é utilizado para vc saber se está somando ou subtraindo!
A segunda opção é usar valores NEGATIVOS para os débitos....
SE vc optar por utilizá-la, para ter o saldo basta fazer um sql Select Sum
ps. te adicionei ao MSN se quiser trocar umas idéias
eu disse.... vc tem DUAS opções....
uma é criar um campo extra.... SE vc se utilizar desta, vc não precisa chamar este campo extra para o seu grid... ele só é utilizado para vc saber se está somando ou subtraindo!
A segunda opção é usar valores NEGATIVOS para os débitos....
SE vc optar por utilizá-la, para ter o saldo basta fazer um sql Select Sum
ps. te adicionei ao MSN se quiser trocar umas idéias
Eu sugiro que você faça isso em uma stored procedure. Desta forma o cálculo do campo saldo já seria retornado populado e o desempenho seria mais eficiênte.
Eu sugiro que você calcule o saldo no próprio grid.
Primeiro você preenche ele e depois faz um laço de repetição varrendo as linhas e calculando.
Primeiro você preenche ele e depois faz um laço de repetição varrendo as linhas e calculando.
é justamente o que o ASHKATCHUP disse!
O problema eh q não sei como fazer esse loop no grid!
O problema eh q não sei como fazer esse loop no grid!
alguem sabe fazer isso que o ASHKATCHUP sugeriu?
Tópico encerrado , respostas não são mais permitidas