Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Olá Pessoal,
Estou montando uma analise do movimento bancário e precisaria gerar o saldo anterior para que seja possível: saldo anterior + entrada – saída = saldo atual
Se alguém puder me ajudar desde já agradeço.
Data Lançamento | Saldo Inicial | Valor_Entrada | Valor_Saída | Saldo Final |
---|---|---|---|---|
01/06/2014 | 1.000,00 | 200,00 | 100,00 | 1.100,00 |
04/06/2014 | 1.100,00 | 0,00 | 100,00 | 1.000,00 |
08/06/2014 | 1.000,00 | 0,00 | 300,00 | 700,00 |
O saldo inicial é o saldo final do dia anterior. Mas pode haver intervalos de dadas.
O Valor_Entradas e Valor_Saída já busco do banco de dados.
O Saldo Final é Saldo Inicial + Valor Entrada - Valor Saída.
Tratei o script da seguinte forma.
// --- Conta Caixa --- //
SQL SELECT
CD_CONTA,
CD_GRUPOCXA,
NM_CONTA
FROM CONTACXA WHERE CD_GRUPOCXA > '0';
// --- Lançamentos no Caixa --- //
LOAD
*,
YEAR(DT_MOVIMENTO) AS ANO,
MONTH(DT_MOVIMENTO) AS MES,
DAY(DT_MOVIMENTO) AS DIA,
DATE(DT_MOVIMENTO) AS DATA,
WEEK(DT_MOVIMENTO) AS SEMANA,
WEEKDAY(DT_MOVIMENTO) AS DIA_SEMANA;
SELECT
CD_CONTA,
CD_FILIAL,
DT_LANCAMENTO,
DT_MOVIMENTO,
FL_CONCILIADO,
FL_DC,
NM_HISTORICO,
VL_LANCAMENTO,
// ENTRADA
CASE
WHEN FL_DC = 'D' AND CD_FILIAL = '1'
THEN (VL_LANCAMENTO)
ELSE
0
END
AS VALOR_ENTRADA,
// SAIDA
CASE
WHEN FL_DC = 'C' AND CD_FILIAL = '1'
THEN (VL_LANCAMENTO)
ELSE
0
END
AS VALOR_SAIDA,
NR_DOCUMENTO,
SR_DOCUMENTO,
TP_LANCAMENTO
FROM FINCXALCT;
MOVIMENTO:
LOAD
CD_FILIAL,
CD_CONTA,
DT_MOVIMENTO,
VL_LANCAMENTO,
FL_DC,
rangesum (
if (CD_FILIAL = Peek(CD_FILIAL) AND CD_CONTA = PEEK (CD_CONTA),
rangesum ((VALOR_SAIDA-VALOR_ENTRADA), PEEK (SALDO)), (VALOR_SAIDA-VALOR_ENTRADA)))
AS SALD0_CAIXA
RESIDENT FINCXALCT ORDER BY DT_MOVIMENTO;
Script de carga:
SALDO_INICIAL:
LOAD * INLINE [
CODIGO_CONTA, SALDO_INICIAL
A, 1000
];
TMP:
LOAD * INLINE [
DT, CODIGO_FILIAL, CODIGO_CONTA, VALOR_ENTRADA, VALOR_SAIDA
01/06/2014, 1, A, 100, 50
01/06/2014, 2, A, 100, 50
04/06/2014, 1, A, 0, 50
04/06/2014, 2, A, 0, 50
08/06/2014, 1, A, 0, 150
08/06/2014, 2, A, 0, 150
];
Crie um gráfico tipo tabela simples (veja imagem anexa)
Na coluna SD. INICIAL inclua a expressão abaixo:
If(IsNull(Above(Sum(VALOR_ENTRADA - VALOR_SAIDA))),
SALDO_INICIAL,
Above([SALDO DIA])
)
Na coluna SALDO DIA inclua a expressão:
Sum(VALOR_ENTRADA - VALOR_SAIDA) +
If(IsNull(Above(Sum(VALOR_ENTRADA - VALOR_SAIDA))),
SALDO_INICIAL,
Above([SALDO DIA])
)
Rogério,
Resolvido!!! Cara se você soubesse o que quebrei a cabeça nisso...
Muito obrigado mesmo.
Abraço
Precisando estamos por ai....
Grande abraço.
Marco, Show!!! Deu certo meu velho...muito obrigado pela atenção.
Abraço
Andre sempre de preferência em utilizar as funções do qlikview que não dependam da carga para conseguir o resultado. É muito mais fácil, prático e rápido.
Imagine se sua carga levar mais de 10 minutos para finalizar. Do modo como eu postei, sem dar carga você tem o resultado, e se for necessário alterar como se faz o cálculo é só editar a expressão.
Marco, certo entendi...obrigado pela dica, vou tomar esse cuidados.
um abraço