[firebase-br] SQL que funcionava no FB 2.1 não funciona como esperado no FB 3.0

Gladiston Santana gladiston em vidy.com.br
Qua Jan 15 10:21:31 -03 2020


Esse SQL não funcionaria em lugar nenhum.
Me admira dizer que funcionava antes.
Você está atualizando  valunitdesc com o resultado de uma expressão, até
que o update seja concluído não adiantará usar:
  total=valunitdesc*qtde
porque   valunitdesc ainda terá o seu valor anterior.
Tente assim:
update pedidos_det set
  desconto=10,
  valunitdesc=round(valunit-(valunit*desconto/100),2),
  total= round(valunit-(valunit*desconto/100),2)*qtde
where id_pedidos=123;

Contudo se total é sempre o resultado de uma expressão matemática usando as
colunas da mesma tabela, como sugestão crie ele como campo calculado, isto
é, um campo virtual que não armazena um valor, mas *exibe* o resultado da
expressão. Ex:
CREATE TABLE  pedidos_det  (
(...)
    total float COMPUTED BY ( qtde * valunitdesc ) ,
(...)
caso total seja um campo com apenas 2 casas decimais use CAST:
    total NUMERIC(18,2) COMPUTED BY (
   CAST(( qtde * valunitdesc ) AS NUMERIC(18,2) )
    ),

INTE+
Em ter., 14 de jan. de 2020 às 20:02, Fausto Cintra Junior <fcj001 em gmail.com>
escreveu:

> Pessoal,
>
> O SQL abaixo é para aplicar um desconto no valor dos itens de um pedido.
> Funcionava no FB 2.1 mas no FB 3.0 se comporta de maneira diferente.
>
> update pedidos_det
> set desconto=10,
> valunitdesc=round(valunit-(valunit*desconto/100),2,.
> total=valunitdesc*qtde
> where id_pedidos=123;
>
> Executei pelo IBExpert.
> Na primeira execução só a coluna desconto foi setada para 10; valunitdesc e
> total permaneceram com os valores que já tinham.
>
> Pesquisei no Release Notes mas não consegui nenhuma informação.
>
> Alguém sabe como fazer isso?
>
> []'s
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
>


-- 
A Vidy possui um Sistema de Gestão da Qualidade estruturado e com
Certificação ISO 9001 há mais de 10 anos, mantendo seu foco na Qualidade e
na Melhoria Continua.

Em março de2018 migramos com sucesso para a nova versão da ISO 9001.

Somos a única Empresa Brasileira de Engenharia de Laboratórios com
certificação com o Escopo Completo; desde Projetos, Engenharia, Construção,
Fabricação e Instalação de Laboratórios.



Mais detalhes sobre a lista de discussão lista