O Evaluate, na forma dw_control.Describe(“Evaluate(‘<Expressão>’, ” + <NumeroDaLinha> + “)”), é muito utilizado como meio de executar código dinamicamente no PowerBuilder.Contudo, o Evaluate não usa o mesmo compilador do PowerBuilder para validar a sintaxe da expressão, a primeira evidência disso é que ele não apresenta mensagens amigáveis sobre erros na sintaxe, simplesmente indica linha e coluna onde há erro.
Outra evidência é que a gramática do Evaluate é um pouco diferente do PowerScript pois aceita expressões como “variável IN ()” ou “IF (then, else)” ou ainda “CASE WHEN … THEN …”. Até aqui tudo bem, nada de novo.
O problema começa quando funções globais que recebem como parâmetro de entrada um DateTime, se for passado uma variável Date, a função não rejeita a sintaxe (como ocorre no PowerScript), e pior, ele descarta o valor passado como Date e trata como “01/01/1900”, podendo portanto acarretar em cálculos errados.
Portanto, se for utilizar uma função global que recebe datas no Evaluate, assegure-se de que ela seja declarada recebendo tipos DateTime e que sejam passados valores DateTime nas chamadas.
Latest posts by Breno RdV (see all)
- O que é Metaclass e como ela funciona. (#python #dev #metaclass) - janeiro 11, 2023
- Entenda a mágica dos Generators. (#python, #dev, #generator, #iterator) - dezembro 28, 2022
- Ordenando um DataFrame por múltiplas colunas. (#python #pandas #jupyter #dev #data) - agosto 3, 2022