ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Postgres erro: operator does not exist: numeric + money.

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Jan 17, 2017 2:04 pm    Assunto: Postgres erro: operator does not exist: numeric + money. Responder com Citação

Estou tentando executar um select e não consigo
Código:
procedure TdmCadastros.DM_ajustaPrecoProduto(idClassificacao: Integer;
  vValor: Currency);
begin
  with QryAux do
  begin
    Close;
    SQL.Clear;
    SQL.Text :=
       ' UPDATE PRODUTO '+
       '    SET CUSTO = P.CUSTO + :pValor '+
       '   FROM PRODUTO P   '+
       '  INNER JOIN CLASSIFICACAO C '+
       '     ON P.ID_CLASSIFICACAO = C.ID '+
       '  WHERE P.ID = :pidClassificacao ';
    ParamByName('pValor').AsCurrency := vValor;
    ParamByName('pidClassificacao').AsInteger := idClassificacao;
    Open;
  end;
end;


Aparece o erro


Uso o firedac com postgreSQL
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Jan 17, 2017 4:24 pm    Assunto: Responder com Citação

Boa tarde,

Não tenho nenhuma experiência com o PostgreSQL, mas pelo que vi achei estranha a sintaxe do comando que você postou.
O que você pretende fazer com esse comando?
Será que a tabela CLASSIFICACAO é necessária no comando, já que pelo que entendi os campos da mesma não são utilizados na alteração?
E me parece que ao colocar a tabela PRODUTO novamente após o From (já está após o Update) é feito um Join dela com ela mesma.


Editado pela última vez por imex em Dom Out 01, 2023 4:05 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Jan 17, 2017 5:16 pm    Assunto: Responder com Citação

imex escreveu:
Boa tarde,

Não tenho nenhuma experiência com o PostgreSQL, mas pelo que vi achei estranha a sintaxe do comando que você postou.
O que você pretende fazer com esse comando?
Será que a tabela CLASSIFICACAO é necessária no comando, já que pelo que entendi os campos da mesma não são utilizados na alteração?
E me parece que ao colocar a tabela PRODUTO novamente após o From (já está após o Update) é feito um Join dela com ela mesma.


Então Imex me passaram para fazer esta sintaxe ai, mais pensando bem não é necessário mesmo

Outra coisa errei no where nao é p.id é p.id_classificacao

Acho que o correto é assim
Código:
UPDATE PRODUTO
   SET CUSTO = CUSTO + 50.00
WHERE ID_CLASSIFICACAO = 17


Mais o erro continua a aparecer.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Jan 17, 2017 5:38 pm    Assunto: Responder com Citação

Esse erro está ocorrendo mesmo sem os parâmetros?
Se estiver ocorrendo só com os parâmetros experimente fazer um teste utlizando AsFloat com o pValor em vez de AsCurrency.

Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Jan 17, 2017 6:04 pm    Assunto: Responder com Citação

imex escreveu:
Esse erro está ocorrendo mesmo sem os parâmetros?
Se estiver ocorrendo só com os parâmetros experimente fazer um teste utlizando AsFloat com o pValor em vez de AsCurrency.

Espero que ajude
Direto no banco não da erro e altera o valor, vou testar aqui
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Jan 17, 2017 6:09 pm    Assunto: Responder com Citação

Novo erro


a procedure
Código:
procedure TdmCadastros.DM_ajustaPrecoProduto(idClassificacao: Integer;
  vValor: Currency);
begin
  with QryAux do
  begin
    Close;
    SQL.Clear;
    SQL.Text :=
       ' UPDATE PRODUTO '+
       '  SET CUSTO = CUSTO + :pValor '+
       '  WHERE ID_CLASSIFICACAO = :pidClassificacao ';
    ParamByName('pValor').AsFloat := vValor;
    ParamByName('pidClassificacao').AsInteger := idClassificacao;
    Open;
  end;
end;

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Jan 17, 2017 7:16 pm    Assunto: Responder com Citação

Tente trocar o Open por ExecSQL.

Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Jan 17, 2017 9:55 pm    Assunto: Responder com Citação

imex escreveu:
Tente trocar o Open por ExecSQL.

Espero que ajude
Vixi, não testei ainda, mais é quase certeza que seja isso o problema porque estou fazendo uma operação de execução e não se seleção.

Amanhã vou testar Imex, bem observado. Ja sabia que comandos insert, update e delete usa o execute e não o open.

Acho que vai dar certo.

Obrigado.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB