SQL 'ZZZNOVO'
SELECT
CASE WHEN CODVEN1 IN (
/*LISTA DE BLOQUEADOS*/
SELECT DISTINCT CODVEN1 FROM TMOV (NOLOCK)
WHERE CODCOLIGADA = 3 AND CODTMV = '1.2.07' AND IDMOV NOT IN (
SELECT IDMOVRELAC FROM TMOV
WHERE CODTMV = '1.1.17'
AND CODCOLIGADA = 3 AND IDMOVRELAC IS NOT NULL)
)
THEN 'BLOQUEADO' ELSE 'LIBERADO' END AS 'R'
FROM TMOV (NOLOCK)
WHERE CODCOLIGADA = 3
AND IDMOV = :FRM_00030 /*FORMULA 00030 RETORNA IDMOV*/
FORMULA
EXECSQL ('ZZZNOVO');
SE RESULTSQL ('ZZZNOVO' , 'R') = 'BLOQUEADO'
ENTAO 0
SENAO 1
FIMSE
RESULTADO
Associei a formula na parametrização do movimento 1.2.07.
Ao tentar inserir um vendedor 'BLOQUEADO' ele aceita normalmente e salva o movimento.
Quando executo a sql manualmente ele me retorna o valor 'BLOQUEADO'.
Só acrescentando: ao executar a fórmula diretamente obtenho o log:
Constante literal ZZZNOVO
Chamada a funcao EXECSQL ZZZNOVO
Constante literal IDMOV
Constante literal I
Chamada a funcao TABMOV IDMOV I
Resultado da funcao TABMOV 250480,00000
Resultado da formula 250480,00000
Resultado da funcao EXECSQL 1,00000
Constante literal ZZZNOVO
Constante literal R
Chamada a funcao RESULTSQL ZZZNOVO R
Resultado da funcao RESULTSQL BLOQUEADO
Constante literal BLOQUEADO
Comparacao (=) BLOQUEADO BLOQUEADO
Resultado Comparacao (=) 1,00000
Condição verdadeira: Executa ENTAO
Constante literal 0,00000
Resultado da formula 0,00000
Quando obtenho Resultado da formula 0,00000, não deveria dar erro ao salvar o movimento?
-> Resumo da ópera:
Como verificar, através de fórmula, se o CODVEN1 está ou não em uma lista de CODVEN1 bloqueados?
Se ele estiver nessa lista bloqueada, nao salav o movimento.
A lista de bloqueados é dinamica, ou seja, altera a todo momento.