11 Replies Latest reply: Dec 14, 2016 12:06 PM by Akio Sonehara RSS

    Leitura ODBC Falhou

    Rodrigo Luis Mattjie

      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

        • Re: Leitura ODBC Falhou
          Yuri Nicolett

          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.

          • Re: Leitura ODBC Falhou
            Alessandro Furtado

            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)

            .

            .

            .

            .

            • Re: Leitura ODBC Falhou
              Clever Anjos

              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,

              • Re: Leitura ODBC Falhou
                Robert Roque

                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;

                  • Re: Leitura ODBC Falhou
                    Clever Anjos

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

                      • Re: Leitura ODBC Falhou
                        Robert Roque

                        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?

                          • Re: Leitura ODBC Falhou
                            Tomio Padilha

                            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.

                              • Re: Leitura ODBC Falhou
                                Robert Roque

                                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

                              • Re: Leitura ODBC Falhou
                                Clever Anjos

                                Mesmo um banco de dados não permite que uma tabela tenha duas colunas com nomes idênticos.

                                 

                                Uma query pode retornar duas colunas com o mesmo nome, mas lembre-se que ao carregar no Qlik será criada uma tabela com as colunas correspondentes à sua query, se ela possuir duas colunas com o mesmo nome irá falhar.

                          • Re: Leitura ODBC Falhou
                            Akio Sonehara

                            Boa tarde Rodrigo!

                             

                            Também tive um problema com ODBC: "Leitura ODBC Falhou"...

                             

                            No entanto meu cenário era um pouco diferente...

                             

                            Em um ambiente de testes (Windows 7) criei um case e tudo funcionava corretamente até então. A partir do momento que tive de disponibilizar a solução num servidor (Windows 2012 Server) surgiram os problemas durante o processo de carga dos dados de minha base MySQL. Por inúmeras vezes tentei reinstalar o driver ODBC, pensando que pudesse ser a versão, mas sem sucesso.

                             

                            Ao ler um post abaixo, encontrei uma solução:

                            https://community.qlik.com/message/639849#639849

                            Neste é sugerido que seja reiniciado o servidor do Qlikview... Não sei explicar o porque disso, mas resolveu meu problema.

                             

                            Fica aqui o registro... quem sabe seja útil para alguém.

                             

                            Sucesso!

                            Akio