Pergunte aqui
0

Query com restrição de data parametrizável

perguntadas 2015-10-05 21:27:56 +0100

imagem do gravatar de ccontipe

updated 2015-10-06 17:16:00 +0100

imagem do gravatar de Olivier

Possuo uma tabela denominada "Pagamentos2", assim definida:

- IDPagamento:  (SMALLINT 5);
- DataPagamento (DATE);
- ValorPagamento (DECIMAL 10);
- FK_Movimento (INTEGER 10);
- PagamentoRealizado (VARCHAR 1);
- FK_Transacao (INTEGER 10);
- DataPagamentoReal (DATE);

Criei a seguinte consulta para esta tabela:

SELECT 
        COUNT(1)                                                            AS "Número de pagamentos em aberto", 
        SUM( "Pagamentos2"."ValorPagamento" )              AS "Valor em Aberto (Total)", 
        "Pagamentos2"."ValorPagamento"                         AS "Valor Pagamento", 
        "Pagamentos2"."DataPagamento"                          AS "Data do Pagamento", 
        MONTHNAME( "Pagamentos2"."DataPagamento" ) AS "Mês do Pagamento Previsto" 
FROM 
        "Pagamentos2", 
        "Movimentos_2", 
        "Transacao_3" 
WHERE 
        "Pagamentos2"."FK_Movimento" = "Movimentos_2"."IDMovimento" AND 
        "Movimentos_2"."FK_Transacao" = "Transacao_3"."IDTransacao"    AND 
        "Pagamentos2"."DataPagamento" < {D '2015-12-31' }                       AND 
        "Pagamentos2"."PagamentoRealizado" != 'S' 
GROUP BY 
        "Pagamentos2"."ValorPagamento", 
        MONTHNAME( "Pagamentos2"."DataPagamento" ), 
        "Pagamentos2"."DataPagamento" 
ORDER BY 
        "Mês do Pagamento Previsto" DESC"

Gostaria que essa consulta fosse parametrizada pelo campo "Pagamentos2"."DataPagamento", de forma que eu pudesse retirar a restrição "Pagamentos2."DataPagamento" < {D '2015-12-31'} da cláusula WHERE e, além disso, que o relatório criado com base nessa consulta apresentasse em seu cabeçalho a informação da restrição de data parametrizada, como no exemplo abaixo:

"Relatório de Pagamentos em aberto - Até: [mesmaRestriçãoDaCláusulaWHERE]"

Utilizo ubuntu 14.04 LTS e LibreOffice5.0

Grande abraço Cesar

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

1 Resposta

0

respondidas 2015-10-07 15:29:58 +0100

imagem do gravatar de Grafeno

Bom dia,


No Base é possível criar um parâmetro de consulta colocando dois pontos (:) antes do nome da variável. Então, troque a linha:

"Pagamentos2"."DataPagamento" < {D '2015-12-31' }     AND

por

"Pagamentos2"."DataPagamento" < :pDataPagamento       AND



Com o :pDataPagamento definido como parâmetro, o Base exibirá um diálogo "Entrada de Parâmetro" perguntando qual o valor da variável sempre que sua consulta for executada.

Com relação ao relatório, você poderá desenhar uma caixa de texto no cabeçalho e atribuir a variável pDataPagamento como campo de dados (janela Propriedades > aba Dados).

Obs.: o "p" foi colocado na frente de "DataPagamento" para facilitar a identificação da variável como parâmetro.


Atte,
Grafeno

editar assinalar como ofensivo Excluir Link mais
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2015-10-05 21:27:56 +0100

Lidas: 79 vezes

Última atualização: Oct 07 '15