Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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.
Espero que possam me ajudar. Obrigado.
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;
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.
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
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
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