EderDias 0 Denunciar post Postado Agosto 4, 2009 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
Chrnos 30 Denunciar post Postado Agosto 4, 2009 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
EderDias 0 Denunciar post Postado Agosto 5, 2009 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
Chrnos 30 Denunciar post Postado Agosto 6, 2009 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
EderDias 0 Denunciar post Postado Agosto 6, 2009 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