Ajuda - Busca - Membros - Calendário
Versão Completa: Select com join não retorna resultados no D7
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
Agostinho Sieczkowski
Estou com um problema envolvendo a execução de um select com join num dbexpress, e gostaria de saber se já passaste por isso ou se tens idéia do que ele está fazendo.

O comando que reproduzo abaixo, só para veres, quando executado no IbExpert, retorna todos os registros: a tabela GerPlanoContas contém um plano de contas bancário, e a tabela Banlancamento contém os lançamentos para algumas destas contas, somente as de último nível. O objetivo do select é retornar o plano de contas completo, mesmo com as contas para as quais não tenham havido lançamentos, por isso o "left join", e com as informações de onde houve lançamento.

Como falei, ao executar o comando no IbExpert, o retorno é o esperado. Porém, ao colocar este comando num SqlDataSet com as ligações para o ClientDataSet dentro de uma aplicação D7, o retorno são somente os registros da tabela GerPlanoContas, como se não houvesse lançamento na outra tabela.

Já fiz testes alterando o comando para fazer via union, select na BanLancamento com union na GerPlanoContas, e o retorno é o mesmo.

Se tiveres alguma informação sobre este comportamento, agradeceria.

select gpl.codconta,
extract (year from lct.DatLancamento) Ano,
extract (month from lct.DatLancamento) Mes,
lct.datlancamento Dt_Lanc,
lct.nrodocumento Documento,
lct.deschistorico Histor,
coalesce (lct.vlrdocumento, 0.00) Valor,
lct.docconciliado Concil,
gpl.descconta Conta,
lct.FlgCredDebt
from gerplanocontas gpl

inner join admempresa emp
on emp.codempresa = :PCodEmpresa

left join banlancamento lct
on (lct.codempresa = emp.codempresa and
lct.codbanco = :pcodbanco and
lct.codagencia = :pcodagencia and
lct.nrocontacorrente = :pnrocontacorrente and
lct.datlancamento between :pdatinicio and :pdatfinal and
lct.codreduz = gpl.codreduz)

where
gpl.codtipoplano = emp.codplanobancario

order by gpl.codconta,
extract (year from lct.DatLancamento),
extract (month from lct.DatLancamento),
lct.flgcreddebt desc,
lct.seqregistro


Att.

Agostinho
Jhonas
QUOTE
Como falei, ao executar o comando no IbExpert, o retorno é o esperado. Porém, ao colocar este comando num SqlDataSet com as ligações para o ClientDataSet dentro de uma aplicação D7, o retorno são somente os registros da tabela GerPlanoContas, como se não houvesse lançamento na outra tabela.


Se não me engano, ocorre que num SqlDataSet a sintaxe da instrução sql é um pouco diferente

http://www.forumweb.com.br/foruns/index.ph...dpost__p__83205

http://edn.embarcadero.com/article/21408

exemplo:

http://www.dotbr.com.br/fernando/lp_comerc...ar-ParteIII.pdf

http://www.t2ti.com/curso/video/delphi/avancado/cda.php

http://www.planetadelphi.com.br/artigo/147...hando-com-view/

abraço



Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.