Histórico da Página
...
(SubStr(Bin2Str(X3_OBRIGAT),1,1)=="x")
A manipulação correta do X3_OBRIGAT é feita utilizando a API:
X3Obrigat(X3_CAMPO)
Assim como a seguinte manipulação do campo X3_USADO também não será mais aceita na versão 12.1:
...
ALLTRIM(UPPER(SX3->X3_USADO)) <> "€€€€€€€€€€€€€€ "
A manipulação correta do X3_USADO é feita utilizando a API:
deverá ser feita conforme abaixo:
X3Uso(SX3->X3_USADO)
X3Reserv(SX3->X3_RESERV)
X3Obrigat(NOME_DO_CAMPO)
O Campo X3_USADO também é utilizado para determinar se um campo é chave ou se um campo é alterável. Para essas utilizações foram criadas as funções abaixo:
X3Chave(SX3->X3_USADO)
X3Alteravel(SX3->X3_USADO)
Atenção:
A função X3Obrigat() deverá receber o nome do campo da SX3 e não é necessário estar previamente posicionado, a própria função faz o seek e posiciona a SX3 de acordo com o nome do campo recebido.
As funções X3Uso(), X3Reserv(), X3Chave() e X3Alteravel() deverão receber o conteúdo dos respectivos campos a serem avaliados, sendo necessário posicionar a SX3 previamente.X3Uso(X3_USADO)