Ir para conteúdo

POWERED BY:

Arquivado

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

EderDias

[Resolvido] Consulta SQL Paradox

Recommended Posts

Ola...

 

Estou querendo fazer uma consulta em paradox.

estou usando este codigo abaixo:

 

If ComboboxUFOrigem.TEXT = 'SC' Then

Begin

Txt := 'SELECT CTRCT.SIGLA_CTRC, CTRCT.NUMERO_CTRC, CTRCT.DATA_EMISSAO, CTRCT.FIL_DEST, CTRCT.UF_DESTINO, '+

'CTRCT.TIPO_MERCADORIA, CTRCT.KG_CALCULO, CTRCT.VALOR_N_FISCAL, CTRCT.SGL_UNID_EMIT, CTRCT.NRO_MANIFESTO,CTRCT.pag_cnpj '+

'FROM CTRCT, CLISEG WHERE '+

'(CTRCT.SITUACAO_CTRC <> "C") '+

'and (CTRCT.PAG_CNPJ <> CLISEG.CNPJ) '+

'and ((CTRCT.SIGLA_CTRC = "BLU") '+

'OR (CTRCT.SIGLA_CTRC = "CHA")) '+

'And CTRCT.DATA_EMISSAO between :DataInicial and :DataFinal ORDER BY CTRCT.DATA_EMISSAO';

end;

a consulta funciona corretamente, porem nesta linha abaixo bagunça tudo:

'and (CTRCT.PAG_CNPJ <> CLISEG.CNPJ) '+

nesta tabela CLISEG.CNPJ este cadastrado os cnpj dos clientes que não devem fazer parte do relatorio, ou seja, cliente que não devem estar na consulta.

Tem apenas 3 clientes...

 

o que acontece é que os dados saem triplicados, acredito que é por causa de serem 3 clientes.

 

se eu tirar esta linha e tirar do from a tabela CLISEG ai funciona, mas precido do filtro

 

Como eu poderia fazer esta consulta?

 

Mto Grato

 

Eder

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou usar o comando Distinct? Não lembro agora se o Paradox o aceita, mas não custa tentar fazer seu select com ele.

 

Txt := 'SELECT DISTINCT CTRCT.SIGLA_CTRC, CTRCT.NUMERO_CTRC, CTRCT.DATA_EMISSAO, CTRCT.FIL_DEST, CTRCT.UF_DESTINO, '+
          'CTRCT.TIPO_MERCADORIA, CTRCT.KG_CALCULO, CTRCT.VALOR_N_FISCAL, CTRCT.SGL_UNID_EMIT, CTRCT.NRO_MANIFESTO,CTRCT.pag_cnpj '+
          'FROM CTRCT, CLISEG WHERE '+
              '(CTRCT.SITUACAO_CTRC <> "C") '+
              'and (CTRCT.PAG_CNPJ <> CLISEG.CNPJ) '+
              'and ((CTRCT.SIGLA_CTRC = "BLU") '+
          'OR (CTRCT.SIGLA_CTRC = "CHA")) '+
          'And CTRCT.DATA_EMISSAO between :DataInicial and :DataFinal ORDER BY CTRCT.DATA_EMISSAO';

Verificou também se as tabelas envolvidas não tem dados duplicados nestes casos?

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola...valew..a dica..esqueci que poderia utilizar o DISTINCT então a questão da duplicidade resolveu, porem este linha parece não esta correta:

'and (CTRCT.PAG_CNPJ <> CLISEG.CNPJ) '+

esta linha não emilina da consulta os clientes(cnpj).

 

ele teria que tirar da consulta todos os clientes que achar.

 

se eu substituir a linha acima e colocar na mão tipo abaixo e da certo, mas eu gostaria que a comparação fosse com a tabela.

'and ((CTRCT.PAG_CNPJ <> "25.455.525/0001-09") '+

'and (CTRCT.PAG_CNPJ <> "12.538.358/0001-26")) '+

Como eu poderia resolver este problema?

 

Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Talvez seja necessário uma subselect no seu where... tem como postar exemplos de como saem os dados e como deveriam sair para analisar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola..Crhmos.

 

Resolvido ..

 

um amigo me deu a seguinte dica:

 

Txt := 'SELECT CTRCT.SIGLA_CTRC, CTRCT.NUMERO_CTRC, CTRCT.DATA_EMISSAO, CTRCT.FIL_DEST, CTRCT.UF_DESTINO, '+

'CTRCT.TIPO_MERCADORIA, CTRCT.KG_CALCULO, CTRCT.VALOR_N_FISCAL, CTRCT.SGL_UNID_EMIT, CTRCT.NRO_MANIFESTO,CTRCT.pag_cnpj '+

'FROM CTRCT'+

'WHERE (CTRCT.SITUACAO_CTRC <> "C") '+

'and ((CTRCT.SIGLA_CTRC = "BLU") '+

'OR (CTRCT.SIGLA_CTRC = "CHA")) '+

'and not exists(select 1 from CLISEG where CTRCT.PAG_CNPJ = CLISEG.CNPJ) '+

'And CTRCT.DATA_EMISSAO between :DataInicial and :DataFinal ORDER BY CTRCT.DATA_EMISSAO';

end;

acredito que você se referia a esta subselect.

 

Beleza deu tudo certinho..

 

Mto Grato pela ajuda..

 

Abraç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.