Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Leitura ODBC Falhou

Boa tarde

Temos um script que roda perfeitamente no SQL, porém no Qlik dá o seguinte erro:

Rodei outras tabelas e a conexão está ok.

Em anexo script

Capturar.PNG

Desde já obrigado

Rodrigo Mattjie

Labels (2)
11 Replies
nicolett_yuri

Pode ser alguma configuração no driver ODBC.

Já tentou rodar essa query retornando apenas um Count(*)? Se funcionar, vai adicionando os campos para identificar em qual esta o problema.

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Rodrigo,

sei que um script com os joins no SQL são resolvidos no server e tem bom desempenho, mas eu gosto de trabalhar fatiando as leituras.  Eu acho mais fácil o entendimento,a manutenção (já vi SQLs com 200 linhas.......) e com isto vou criando os QVD destas tabelas para serem usadas em outros momentos.

Eu faria indo no caminho abaixo e com isto, ficaria facil identificar ou mudar os joins, campos, etc.....

Apenas uma ideia.....

T:

SELECT DISTINCT

        concurso,

  CANDIDATO,

  NOME_COMPL,

  DT_INSCRICAO,

  anoconcl_2g

FROM  lyceum.dbo.LY_CANDIDATO Where SIT_CANDIDATO_VEST='Confirmado';

Inner join (T)

SELECT DISTINCT

        concurso,

  ano,

  semestre,

  UNIDADE_RESPONSAVEL,

  FL_FIELD_01 AS FAZ_PROVA,

  FL_FIELD_02 AS TEM_BOLETO,

  FL_FIELD_03 AS TEM_CONTRATO,

  tipo_ingresso

FROM lyceum.dbo.LY_CONCURSO;

left join (T)

.

.

.

.

furtado@farolbi.com.br
Clever_Anjos
Employee
Employee

Esse erro é comum, você tem dois campos com o mesmo nome que o Qlik não permite, renomeie que tudo vai dar certo

te.valor_boleto,

te.valor_boleto,

e

me.valor_boleto,

me.valor_pago,

Not applicable
Author

Boa tarde pessoal!

Estou com o mesmo erro. Será que é algo em minha estrutura também? Conseguem me ajudar?

SELECT re.RecCodigo, re.RecNrDoc, re.RecParcela, re.RecDtEmissao, re.RecDtVencto, re.RecDtPrevis, re.RecDtRemessa, re.CliCodigo, cl.CliRazSocial, cl.CliNomeFant,

bc.BcoCodigo, bc.BcoNome, re.RecValor, re.RecValorAberto, cast(null as timestamp) RebDtPagto, cast(0 as numeric(13,2)) VrPago, cast(null as timestamp) RebDtLiq, cast(0 as numeric(13,2)) RebVrDesc, cast(0 as numeric(13,2)) RebVrJuros,

cast(0 as numeric(13,2)) RebValor, Cast(null as VarChar(20)) BcoPagto, ed.CidCodigo, cid.CidNome, re.RecTipoDocto, re.EmpCodigo, re.StCodigo, re.RecSituacao, re.FunCodigo,

re.CusCodigo, cc.CusDescricao,

ed.EndTpRua, ed.EndEndereco, ed.EndNr, ed.EndComple, ed.EndCep, ed.EndDDD1, ed.EndFone1, cid.CidUF, cl.CliCnpjCpf, cl.CliInscEst, cl.CliRg, cl.CliFJ, re.RecHistorico, re.EmpCodigo, re.RecVrDescto

- coalesce((select sum(rb.rebvrdesc)

              from recbx rb

             where rb.reccodigo = re.reccodigo

               and rb.empcodigo = re.empcodigo

           ),0) as RecVrDescto

, re.RECPCDESCTO, re.RecVrMulta,

re.RecPcJuros, re.RecVrJuros, bCob.CobPcMulta, bCob.CobPcJuros, bCob.CobDiasRepasse, Cast(null as VarChar(60)) RebObser, re.RecDtDoc, Cast('' as char(2)) RebDoctoBx, re.CobCodigo, re.RecNsNumero

       , ( re.RecVrDesconto

           - coalesce((select sum(rb.rebvrabat)

                from recbx rb

               where rb.reccodigo = re.reccodigo

                 and rb.empcodigo = re.empcodigo

             ), 0)

         ) as RecVrDesconto

,recdtimpboleto, re.Sercodigo, f.funnome, re.recnumctr, cfc.cfccodctb

, re.RECPCCOMISSAO as comissao

, null as ctanrconta

       , cast(0 as numeric(13,2)) RebVrAbat

        , cast('' as varchar(1)) RebDevolucao

FROM Receb re

          LEFT JOIN Ccust cc ON (re.CusCodigo = cc.CusCodigo)

          LEFT JOIN Banco bc ON (re.BcoCodigo = bc.BcoCodigo)

          LEFT JOIN BcoCob bcob ON (re.BcoCodigo = bcob.BcoCodigo and re.CobCodigo = bCob.CobCodigo)

          LEFT JOIN Clien cl ON (re.CliCodigo = cl.CliCodigo)

          LEFT JOIN CliForCtb cfc ON (cl.CliCodigo = cfc.CliCodigo AND re.EmpCodigo = cfc.EmpCodigo

                                      AND cfc.CFCTBTIPO = 'C')

          LEFT JOIN EndCli ed ON (re.CliCodigo = ed.CliCodigo and re.EndCob = ed.EndCodigo)

          LEFT JOIN Cidade cid ON (ed.cidcodigo=cid.cidcodigo)

          LEFT JOIN RECCAN rCan ON (rCan.RECCODIGO = RE.RECCODIGO AND rCan.EMPCODIGO = RE.EMPCODIGO)

              LEFT JOIN FUNCIO F ON (F.funcodigo = re.funcodigo)

WHERE re.RecCodigo is not null and re.RecDtVencto >='09.01.2016' and re.RecDtVencto <='09.12.2016'

and re.RecTipoDocto in ( 'CA', 'CN', 'DD', 'DC', 'DP', 'DM', 'CS', 'OU', 'CH', 'DH', 'CT', 'RC', 'IP' ) and re.StCodigo in ( 'N' ) and ( re.RecSituacao = 'N' OR rCan.RCADATA > '09/12/2016')

and re.RecValorAberto >= 0.01

ORDER BY 5,23;

Clever_Anjos
Employee
Employee

sua query retorna duas colunas com o nome "EmpCodigo", remova ou renomeie uma delas

Not applicable
Author

Mas porque retorna no bd corretamente e no qlik não?

Se eu alterar a coluna retornara com informação incorreta ou não compreendi bem?

tomiopadilha
Contributor II
Contributor II

O BD não bloqueia quando você coloca duas vezes o mesmo nome. Ele simplesmente apresenta duas vezes.

Mas o Qlikview é diferente, ele não permite ter dois campos com o mesmo nome e com isso ele apresenta o erro. E para resolver é só alterar o nome se for campos diferentes ou excluir um dos campos se for o mesmo.

Not applicable
Author

Exclui um deles, mas ainda permaneceu o erro.

Consegue me ajudar?! Fiz estas alterações, mas ainda permaneceu erro..

Leitura ODBC falhou

SELECT re.RecCodigo, re.RecNrDoc, re.RecParcela, re.RecDtEmissao, re.RecDtVencto, re.RecDtPrevis, re.RecDtRemessa, re.CliCodigo, cl.CliRazSocial, cl.CliNomeFant,

bc.BcoCodigo, bc.BcoNome, re.RecValor, re.RecValorAberto, cast(null as timestamp) RebDtPagto, cast(0 as numeric(13,2)) VrPago, cast(null as timestamp) RebDtLiq, cast(0 as numeric(13,2)) RebVrDesc, cast(0 as numeric(13,2)) RebVrJuros,

cast(0 as numeric(13,2)) RebValor, Cast(null as VarChar(20)) BcoPagto, ed.CidCodigo, cid.CidNome, re.RecTipoDocto, re.EmpCodigo, re.StCodigo, re.RecSituacao, re.FunCodigo,

re.CusCodigo, cc.CusDescricao,

ed.EndTpRua, ed.EndEndereco, ed.EndNr, ed.EndComple, ed.EndCep, ed.EndDDD1, ed.EndFone1, cid.CidUF, cl.CliCnpjCpf, cl.CliInscEst, cl.CliRg, cl.CliFJ,

re.RecHistorico, re.EmpCodigo

     , re.RecVrDescto

         - coalesce((select sum(rb.rebvrdesc)

              from recbx rb

             where rb.reccodigo = re.reccodigo

               and rb.empcodigo = re.empcodigo

           ),0)

          as RecVrDesconto

,recdtimpboleto, re.Sercodigo, f.funnome, re.recnumctr, cfc.cfccodctb

, re.RECPCCOMISSAO as comissao

, null as ctanrconta

       , cast(0 as numeric(13,2)) RebVrAbat

        , cast('' as varchar(1)) RebDevolucao

FROM Receb re

          LEFT JOIN Ccust cc ON (re.CusCodigo = cc.CusCodigo)

          LEFT JOIN Banco bc ON (re.BcoCodigo = bc.BcoCodigo)

          LEFT JOIN BcoCob bcob ON (re.BcoCodigo = bcob.BcoCodigo and re.CobCodigo = bCob.CobCodigo)

          LEFT JOIN Clien cl ON (re.CliCodigo = cl.CliCodigo)

          LEFT JOIN CliForCtb cfc ON (cl.CliCodigo = cfc.CliCodigo AND re.EmpCodigo = cfc.EmpCodigo

                                      AND cfc.CFCTBTIPO = 'C')

          LEFT JOIN EndCli ed ON (re.CliCodigo = ed.CliCodigo and re.EndCob = ed.EndCodigo)

          LEFT JOIN Cidade cid ON (ed.cidcodigo=cid.cidcodigo)

          LEFT JOIN RECCAN rCan ON (rCan.RECCODIGO = RE.RECCODIGO AND rCan.EMPCODIGO = RE.EMPCODIGO)

              LEFT JOIN FUNCIO F ON (F.funcodigo = re.funcodigo)

WHERE re.RecCodigo is not null and re.RecDtVencto >= '09/01/2016' and re.RecDtVencto <= '09/13/2016'

and re.EmpCodigo = 1 and re.RecTipoDocto in ( 'CA', 'CN', 'DD', 'DC', 'DP', 'DM', 'CS', 'OU', 'CH', 'DH', 'CT', 'RC', 'IP' ) and re.StCodigo in ( 'N' ) and ( re.RecSituacao = 'N' OR rCan.RCADATA > '09/13/2016')

and re.RecValorAberto >= 0.01

ORDER BY 5,23;

***********************************************

Leitura ODBC falhou

SELECT re.RecCodigo, re.RecNrDoc, re.RecParcela, re.RecDtEmissao, re.RecDtVencto, re.RecDtPrevis, re.RecDtRemessa, re.CliCodigo, cl.CliRazSocial, cl.CliNomeFant,

bc.BcoCodigo, bc.BcoNome, re.RecValor, re.RecValorAberto, cast(null as timestamp) RebDtPagto, cast(0 as numeric(13,2)) VrPago, cast(null as timestamp) RebDtLiq, cast(0 as numeric(13,2)) RebVrDesc, cast(0 as numeric(13,2)) RebVrJuros,

cast(0 as numeric(13,2)) RebValor, Cast(null as VarChar(20)) BcoPagto, ed.CidCodigo, cid.CidNome, re.RecTipoDocto, re.EmpCodigo, re.StCodigo, re.RecSituacao, re.FunCodigo,

re.CusCodigo, cc.CusDescricao,

ed.EndTpRua, ed.EndEndereco, ed.EndNr, ed.EndComple, ed.EndCep, ed.EndDDD1, ed.EndFone1, cid.CidUF, cl.CliCnpjCpf, cl.CliInscEst, cl.CliRg, cl.CliFJ,

re.RecHistorico, re.EmpCodigo

     , re.RecVrDescto

         - coalesce((select sum(rb.rebvrdesc)

              from recbx rb

             where rb.reccodigo = re.reccodigo

               and rb.empcodigo = re.empcodigo

           ),0)

          as RecVrDesconto

,recdtimpboleto, re.Sercodigo, f.funnome, re.recnumctr, cfc.cfccodctb

, re.RECPCCOMISSAO as comissao

, null as ctanrconta

       , cast(0 as numeric(13,2)) RebVrAbat

        , cast('' as varchar(1)) RebDevolucao

FROM Receb re

          LEFT JOIN Ccust cc ON (re.CusCodigo = cc.CusCodigo)

          LEFT JOIN Banco bc ON (re.BcoCodigo = bc.BcoCodigo)

          LEFT JOIN BcoCob bcob ON (re.BcoCodigo = bcob.BcoCodigo and re.CobCodigo = bCob.CobCodigo)

          LEFT JOIN Clien cl ON (re.CliCodigo = cl.CliCodigo)

          LEFT JOIN CliForCtb cfc ON (cl.CliCodigo = cfc.CliCodigo AND re.EmpCodigo = cfc.EmpCodigo

                                      AND cfc.CFCTBTIPO = 'C')

          LEFT JOIN EndCli ed ON (re.CliCodigo = ed.CliCodigo and re.EndCob = ed.EndCodigo)

          LEFT JOIN Cidade cid ON (ed.cidcodigo=cid.cidcodigo)

          LEFT JOIN RECCAN rCan ON (rCan.RECCODIGO = RE.RECCODIGO AND rCan.EMPCODIGO = RE.EMPCODIGO)

              LEFT JOIN FUNCIO F ON (F.funcodigo = re.funcodigo)

WHERE re.RecCodigo is not null and re.RecDtVencto >= '01.09.2016' and re.RecDtVencto <= '13.09.2016'

and re.EmpCodigo = 1 and re.RecTipoDocto in ( 'CA', 'CN', 'DD', 'DC', 'DP', 'DM', 'CS', 'OU', 'CH', 'DH', 'CT', 'RC', 'IP' ) and re.RecValorAberto >= 0.01

ORDER BY 5,23

Clever_Anjos
Employee
Employee

Verifique novamente, ainda deve ter algum duplicado, como seu script é longo parei no primeiro duplicado que achei