LuckSilver

Ordenação Query Webdev

6 posts in this topic

Dae pessoas,

entao, estou fazendo uma query, filtrando ela por data e ordenando, soh q tah dando o seguinte erro abaixo, detalhe, se eu tirar o order ela funciona normal.

Echec de l'exécution de la requête QRY_MovtoAptos.
ERROR: operator does not exist: text > date LINE 1: ...ovtoAptos" WHERE ("QRY_MovtoAptos"."data_lancto" > to_date(... ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.

to usando webdev php com postgresql

se alguem puder ajudar agradeço

 

Share this post


Link to post
Share on other sites

O erro descreve um problema com um identificador de alguma coisa, algo não reconhecido na query, parece ("No operator matches the given name and argument type(s)"). Tem como mostrar a query que vc quer que a gente ajude a corrigir? Rs
Tentou usar o comando de executar a query com aquele parâmetro hQueryWithoutCorrection?

Edited by Fábio Senji
1 person likes this

Share this post


Link to post
Share on other sites

bueno, isso aki eu ainda nao usei hQueryWithoutCorrection

abaixo o fonte da query:

SELECT 
    movimento_apartamentos.sequencia AS sequencia,    
    movimento_apartamentos.data_lancto AS data_lancto,    
    movimento_apartamentos.id_apartamento AS id_apartamento,    
    movimento_apartamentos.id_hospede AS id_hospede,    
    movimento_apartamentos.data_entrada AS data_entrada,    
    movimento_apartamentos.hora_entrada AS hora_entrada,    
    movimento_apartamentos.data_saida AS data_saida,    
    movimento_apartamentos.hora_saida AS hora_saida,    
    movimento_apartamentos.n_dias AS n_dias,    
    movimento_apartamentos.n_pessoas AS n_pessoas,    
    movimento_apartamentos.diaria AS diaria,    
    movimento_apartamentos.total_adiantamentos AS total_adiantamentos,    
    movimento_apartamentos.acres_desc AS acres_desc,    
    movimento_apartamentos.saldo AS saldo,    
    movimento_apartamentos.data_pagto_saldo AS data_pagto_saldo,    
    movimento_apartamentos.status AS status,    
    movimento_apartamentos.observacao AS observacao,    
    movimento_apartamentos.modo_pagto AS modo_pagto,    
    movimento_apartamentos.cod_usuario AS cod_usuario
FROM 
    movimento_apartamentos
WHERE 
    movimento_apartamentos.data_entrada BETWEEN {Paramdata_entrada} AND {Paramdata_entrada1}
ORDER BY 
    data_entrada ASC

Share this post


Link to post
Share on other sites

Pedi ajuda ao @nathanreys pra estudar seu problema. Vejamos o que seu erro diz no seu contexto (query multiplataforma windev+postgres).
O erro deve informar o que ocorre, procuremos entendê-lo. Há casos em que um erro aponta ao lugar errado, mas ao que vi isso geralmente acontece quando esquecemos de fechar um } ou um loop (ex: FOR / END). Assim: Sabe diferenciar o que vc entende do que não entende da mensagem de erro? Isso é importante.


Localizamos na sua query a linha movimento_apartamentos.data_lancto AS data_lancto, referida no erro em:

(...) LINE 1: ...ovtoAptos" WHERE ("QRY_MovtoAptos"."data_lancto" > to_date(... 

Parece haver um problema lá. O que é dito é (use e abuse do google tradutor):

^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.

Lembrando que type cast é conversão de tipo de variável.

Não reconheci to_date mas parece ser uma função.Veja aqui no postgresqltutorial.com que achei no google. Ela converte uma string em data, como seu erro indica em:

operator does not exist: text > date

Resumindo, parece ser um erro de comunicação entre o windev e o postgres, pois o erro é numa função postgres (to_date), que deve ser chamada pelo windev ao rodar uma query para postgres escrita no windev. Na "tradução" da query windev para postgres, ou seja, no drive postgres do windev, talvez haja algo errado. Tudo indica um erro de passagem de parâmetro. Mas onde está? Procure entender o que acontece com os dados passados para a query na ida (por isso peço que nos mostre sua chamada da query) e na volta (onde vc joga os dados dessa query? Há conversão de tipos de variável? Como converte?).

Como pode ser erro tanto seu quanto do drive windev para postgres, eu experimentaria as soluções mais simples antes, como tirar esse AS data_lancto de movimento_apartamentos.data_lancto AS data_lancto, mas isso do AS pode não ter nada a ver, não sei se ele faz algum type cast. Vc também pode seguir a sugestão que o NathanReys me deu aqui: Rodar a query direto no postgres e ver se funciona. É um erro multiplataforma, precisa saber onde ele ocorre.

Não entendi funcionar sem o order na query. Me pergunto se o windev converte data para string somente quando vai ordenar, e usa uma função própria para ordenar strings, e assim ordenar os dados depois com base nessas strings convertidas.

Edited by Fábio Senji
1 person likes this

Share this post


Link to post
Share on other sites
Em 29/10/2020 at 11:04 AM, Fábio Senji disse:

 

Entao, quando eu kis dizer "sem o order na query" eh q eu tirando o "order by" a query funciona numa boa. por isso estou achando q o problema está nesse order by hehe

Share this post


Link to post
Share on other sites

a query tah em anexo, e pra chamar ela eu uso o comando abaixo:

HExecuteQuery(QRY_MovtoAptos,hQueryDefault,dataInicial,dataFinal)

lembrando que do jeito q ela está, funciona, quando eu colodo pra ordenar por data_entrada, ae dá o erro

 

query funcionando.png

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now