Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

six

Contas a pagar e receber no mesmo relatório

Recommended Posts

boa tarde a todos do fórum

 

mais uma dúvida.

Tenho 4 tabelas:

. AReceber

. Cliente

. APagar

. Subgrupo

 

Preciso de um ADOQuery único que me traga os dados por período de data, tanto da tabela de Contas a receber, quanto da tabela Contas a pagar e mostrar estes dados em um relatório no Quickreport

 

Layout do Relatório

 

CONTAS A RECEBER CONTAS A PAGAR

Venc. Cliente Doc. Valor Venc. Conta Doc. Valor

 

 

Fiz esta Rotina sql no ADOQuery, funciona, mas está me trazendo os dados do contas a Receber e contas a pagar duplicados, triplicados, etc e não está filtrando por período de datas. Traz todas as datas.

Uso Delphi 7 e banco de dados access.

 

SELECT AReceber.REC_DATAVENC, Cliente.CLI_FANTASIA,

AReceber.REC_NUMDOC, AReceber.REC_VALORPARC,

AReceber.REC_DATAREC,

APagar.PAG_DATAVENC, Subgrupo.SUB_NOME,

APagar.PAG_NUMDOC, APagar.PAG_VALORTOTAL,

APagar.PAG_DATAPAGTO

FROM Cliente INNER JOIN AReceber ON

Cliente.CLI_CODIGO = AReceber.REC_CODCLIENTE,

Subgrupo INNER JOIN APagar ON

Subgrupo.SUB_CODIGO = APagar.PAG_CODSUBGRUPO

Where AReceber.REC_DATAVENC and

APagar.PAG_DATAVENC BETWEEN :dataini and :datafin and

AReceber.REC_DATAREC is Null and APagar.PAG_DATAPAGTO is Null;

 

 

Gostaria da ajuda de vocês para resolver esta dúvida.

Obrigado

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom,

Vamos lá, estou aqui pra te ajudar.. Mas, ta muito bagunçado e esta no tópico errado.

Ok, vamos lá:

 

Vai trazer realmente duplicados ou triplicados porque você esta fazendo inner com AReceber e inner com APagar cara..

Faz um union all e coloque um identificador para verificar se é AReceber ou APagar...

Tipo isso. (Ps. Não testei o sql pois não criei a tabela, qualquer erro reporte novamente.)

SELECT  AReceber.REC_DATAVENC, 
        Cliente.CLI_FANTASIA,
        AReceber.REC_NUMDOC, 
        AReceber.REC_VALORPARC,
        AReceber.REC_DATAREC,
        'ARECEBER' as TIPOFINACEIRO
FROM Cliente 
INNER JOIN AReceber ON Cliente.CLI_CODIGO = AReceber.REC_CODCLIENTE
Where AReceber.REC_DATAVENC BETWEEN :dataini and :datafin 
and   AReceber.REC_DATAREC is Null

union all

SELECT  APagar.PAG_DATAVENC, 
	Cliente.CLI_FANTASIA,       
        APagar.PAG_NUMDOC, 
        APagar.PAG_VALORTOTAL,
        APagar.PAG_DATAPAGTO,
	'APAGAR' as TIPOFINACEIRO
FROM Cliente 
INNER JOIN APagar ON Subgrupo.SUB_CODIGO = APagar.PAG_CODSUBGRUPO
Where APagar.PAG_DATAVENC BETWEEN :dataini and :datafin 
and   APagar.PAG_DATAPAGTO is Null

Compartilhar este post


Link para o post
Compartilhar em outros sites

Thyago boa noite

 

 

Testei seu código no ADOQuery mas me traz apenas como retorno da sql os dados dos campos

antes do UNION ALL depois do UNION ALL , ou seja, os campos do APagar e Subgrupo

não aparecem no add All Fields do ADOQuery.

 

obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.