Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Want to see what's currently in public preview? We've pulled it all together in one place. Check it out here
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

SQL Firebird

Boa tarde, estou tentando executar o seguinte sql no qlikview, conexão odbc e oledb para banco firebird.

RELATORIO_MOVTRANS_COMISSAO:

SQL select

       processonaval.codigo

      , motorist.codigo || ' - ' ||motorist.nome Motorista

      , conj_servicos.valor_servico

      , processonaval.datacoleta_exec

      , contasre.faturado

      , valores_conhecimento.frete_tarifa

      , clifor.razao pagador

      , clifor.razao remetente

      , clifor.cidade

      , clifor.razao destinatario

      , fatura.dataemissao data_emissao_fatura

      , fatura.datapagto data_recebimento_fatura

      , fatura.numerofatura numero_fatura

      , processonaval.localcoleta   localdacoleta

      , processonaval.localentrega  localdaentrega

      , processonaval.dataprocesso  dataprocesso

      , processonaval.datacoleta_prog   datacoletaprogramada

      , processonaval.datacoleta_exec

      , tipo_processo_container.descricao

      , veiculos.placa cavalo

      , veiculos.placa carreta

      , case motorist.tipofunc

         when '0' then 'Funcionário'

         when '1' then 'Terceiro-Autonomo'

         when '2' then 'Terceiro-Empresa'

         else

         'Sem Definição'              

         end desc_tipofunc

from processonaval

left join contasre             on contasre.codigo_origem = processonaval.codigo_origem and contasre.origem = 8

left join conj_servicos        on conj_servicos.codigo_origem = processonaval.codigo and conj_servicos.origem = 8

left join itensfat             on itensfat.codigocontarc = contasre.codigo

left join fatura               on fatura.codigofatura = itensfat.codigofatura

left join clifor               on clifor.codigo = processonaval.entrega and clifor.codigo = processonaval.pagador and clifor.codigo = processonaval.coleta

join tipo_processo_container   on tipo_processo_container.codigo = processonaval.tipoprocesso

left join valores_conhecimento on valores_conhecimento.codigo_origem = processonaval.codigo and valores_conhecimento.origem = 8

left join motorist             on motorist.codigo = conj_servicos.motorista

left join veiculos             on veiculos.codigo = conj_servicos.cavalo and veiculos.codigo = conj_servicos.carreta

where (select count(codigo) from conj_servicos where codigo_origem = processonaval.codigo and origem = 😎 > 1;

Todas as vezes que mando executar acontece o seguinte erro. Se eu mando executar no ibexpert ele executa sem problemas.

captura.PNG

Espero que possam me ajudar. Obrigado.

Labels (1)
5 Replies
rafaugusto
Contributor III
Contributor III

Boa noite Gabriel.

Duas perguntas:

Primeira, qual o driver odbc que você está usando (e qual versão do firebird)? Eu sofri pra achar o certo, mas depois não tive mais problemas.

Sugestão: FirebirdSql.Data.FirebirdClient-4.8.0.0.msi

Eu baixei antes dois, mas não resolvi a contento.

A segunda, eu não entendi seu where, percebi que faz um subselect. Por experiência com FB, eu prefiro retornar os where dentro de um select principal e fazer o subselect na segunda (junto com os joins).

E por fim, eu não vejo a instrução LOAD. Ex:

[SUATABELA]:

LOAD

    Campo1,

     Campo2,

     Campon;

SQL SELECT campo1

FROM TABELADOBANCO

where TABELADOBANCO.CAMPO = PARAMETRO;

Not applicable
Author

Bom dia, esse sql, é o mesmo que executa no sistema que utilizamos, ele é feito dessa maneira porque existem viagens em que existem 2 motoristas. Dai para fazer o calculo de comissão, é necessário que apareçam os 2. No ibexpert funciona sem problemas. Eu estou utilizando o driver odbc Firebird_ODBC_2.0.4.155_x64. Baixei o driver que me passou, mas o erro permanece.

Clever_Anjos
Support
Support

Você diz "odbc e oledb "

Só dá para usar um de cada vez, qual está usando?

Role a tela de erro e anexe o código e/ou mensagem de erro por favor

Tente usar um comando simples para ver se funciona:

select cast('NOW' as timestamp) from rdb$database

Not applicable
Author

Bom dia Clever, ja testei das duas maneiras ODBC e OLEDB, ambas acontecem o mesmo erro.

ErrorSource: Microsoft OLE DB Provider for ODBC Drivers, ErrorMsg: [ODBC Firebird Driver][Firebird]Dynamic SQL Error

SQL error code = -104

Token unknown - line 40, column 22

from

RELATORIO_MOVTRANS_COMISSAO:

SQL select

       processonaval.codigo

      , motorist.codigo || ' - ' ||motorist.nome Motorista

      , conj_servicos.valor_servico

      , processonaval.datacoleta_exec

      , contasre.faturado

      , valores_conhecimento.frete_tarifa

      , clifor.razao pagador

      , clifor.razao remetente

      , clifor.cidade

      , clifor.razao destinatario

      , fatura.dataemissao data_emissao_fatura

      , fatura.datapagto data_recebimento_fatura

      , fatura.numerofatura numero_fatura

      , processonaval.localcoleta   localdacoleta

      , processonaval.localentrega  localdaentrega

      , processonaval.dataprocesso  dataprocesso

      , processonaval.datacoleta_prog   datacoletaprogramada

      , processonaval.datacoleta_exec

      , tipo_processo_container.descricao

      , veiculos.placa cavalo

      , veiculos.placa carreta

      , case motorist.tipofunc

         when '0' then 'Funcionário'

         when '1' then 'Terceiro-Autonomo'

         when '2' then 'Terceiro-Empresa'

         else

         'Sem Definição'              

         end desc_tipofunc

from processonaval

left join contasre             on contasre.codigo_origem = processonaval.codigo_origem and contasre.origem = 8

left join conj_servicos        on conj_servicos.codigo_origem = processonaval.codigo and conj_servicos.origem = 8

left join itensfat             on itensfat.codigocontarc = contasre.codigo

left join fatura               on fatura.codigofatura = itensfat.codigofatura

left join clifor               on clifor.codigo = processonaval.entrega and clifor.codigo = processonaval.pagador and clifor.codigo = processonaval.coleta

join tipo_processo_container   on tipo_processo_container.codigo = processonaval.tipoprocesso

left join valores_conhecimento on valores_conhecimento.codigo_origem = processonaval.codigo and valores_conhecimento.origem = 8

left join motorist             on motorist.codigo = conj_servicos.motorista

left join veiculos             on veiculos.codigo = conj_servicos.cavalo and veiculos.codigo = conj_servicos.carreta

where (count(codigo) from conj_servicos where codigo_origem = processonaval.codigo and origem = 😎 > 1

Clever_Anjos
Support
Support

where (count(codigo) from conj_servicos where codigo_origem = processonaval.codigo and origem = 😎 > 1

should be

where (select count(codigo) from conj_servicos where codigo_origem = processonaval.codigo and origem = 😎 > 1