Exemplo de uma estrutura de fluxo de caixa:
Tabela tab_VendasParcelas - registra os valores a receber
controles:
IdParcelaVenda, IdVenda, ValorParcelaVenda, DataVencimentoParcelaVenda, DataPagamentoParcelaVenda
Tabela tab_ComprasParcelas - registra os valores a pagar
controles:
IdParcelaCompra, IdCompra, ValorParcelaCompra, DataVencimentoParcelaCompra, DataPagamentoParcelaCompra
Consulta con_FluxoCaixaReceber - Base: Tabela VendasParcelas
IdParcelaVenda, DataVencimentoParcelaVenda, DataPagamentoParcelaVenda (É Nulo)
Consulta con_FluxoCaixaPagar - Base: Tabela ComprasParcelas
IdParcelaCompra, DataVencimentoParcelaCompra, DataPagamentoParcelaCompra (É Nulo)
Consulta con_FluxoCaixaDatasVendaCompra - consulta união de datas com base nas consultas FluxoCaixaReceber e FluxoCaixaPagar
SELECT con_FluxoCaixaReceber.DataVencimentoParcelaVenda AS DataUni
FROM con_FluxoCaixaReceber;
UNION
SELECT con_FluxoCaixaPagar.DataVencimentoParcelaCompra
FROM con_FluxoCaixaPagar;
Consulta con_FluxoCaixaSomaEntradasDia - Base: con_FluxoCaixaDatasVendaCompra e Tabela VendasParcelas
soma as parcelas das vendas por data de vencimento
SELECT con_FluxoCaixaDatasEntradaSaida.DataUni, Sum(Nz([ValorParcelaVenda])) AS Entrada
FROM con_FluxoCaixaDatasEntradaSaida LEFT JOIN tab_VendasParcelas ON con_FluxoCaixaDatasEntradaSaida.DataUni = tab_VendasParcelas.DataVencimentoParcelaVenda
GROUP BY con_FluxoCaixaDatasEntradaSaida.DataUni;
Consulta con_FluxoCaixaSomaSaidasDia - Base: con_FluxoCaixaDatasVendaCompra e Tabela ComprasParcelas
soma as parcelas das compras por data de vencimento
SELECT con_FluxoCaixaDatasEntradaSaida.DataUni, Sum(Nz([ValorParcelaCompra])) AS Saida
FROM con_FluxoCaixaDatasEntradaSaida LEFT JOIN tab_ComprasParcelas ON con_FluxoCaixaDatasEntradaSaida.DataUni = tab_ComprasParcelas.DataVencimentoParcelaCompra
GROUP BY con_FluxoCaixaDatasEntradaSaida.DataUni;
E finalmente:
Consulta con_FluxoCaixa - Base: con_FluxoCaixaDatasVendaCompra, con_FluxoCaixaSomaEntradasDia, FluxoCaixaSomaSaidasDia
SELECT con_FluxoCaixaDatasVendaCompra.DataUni, con_FluxoCaixaSomaEntradasDia.Entrada, con_FluxoCaixaSomaSaidasDia.Saida, ([Entrada]-[Saida]) AS DiferencaDiaria
FROM (con_FluxoCaixaDatasVendaCompra INNER JOIN con_FluxoCaixaSomaSaidasDia ON con_FluxoCaixaDatasVendaCompra.DataUni = con_FluxoCaixaSomaSaidasDia.DataUni) INNER JOIN con_FluxoCaixaSomaEntradasDia ON con_FluxoCaixaDatasVendaCompra.DataUni = con_FluxoCaixaSomaEntradasDia.DataUni