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
Pergunta
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
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.