Axapta Validação Substituir sempre executa duas vezes
-
18-09-2019 - |
Pergunta
Na maioria dos casos, os métodos de validação que eu substituído executar duas vezes cada vez que o campo pai é alterado. Tudo ainda funciona, mas os Infolog exibe mensagens duplas de cada vez.
Existe alguma maneira para evitar isso?
Graças
public boolean validate()
{
boolean ret;
int exlowValue;
int lowValue;
int highValue;
int exhighValue;
str errorMessage;
;
ret = super();
//Make sure a numeric value was entered
if (ABC_RegExValidator::validateMe("integer", int2str (ABC_Checks_checkExtremeLow.value())))
{
//get the form values
exlowValue = ABC_Checks_checkExtremeLow.value();
lowValue = str2int(ABC_Checks_checkLow.valueStr());
highValue = str2int(ABC_Checks_checkHigh.valueStr());
exhighValue = str2int(ABC_Checks_checkExtremeHigh.valueStr());
//Extreme Low must be 0 or less than all others
if (exlowValue != 0)
{
//A non-zero value was entered; it must be less than all other fields
if ((exlowValue >= lowValue && lowValue > 0) || (exlowValue >= highValue && highValue > 0) || (exlowValue >= exhighValue && exhighValue > 0))
{
//Return an error
ret = checkfailed(strFmt("@ABC197", int2str(exlowValue)));
}
else
{
//Not greater than any other value
//Success!
ret = true;
} //Greater than all others?
}
else
{
//No errors
ret = true;
} // 0?
}
else
{
//Regular expression failed
//Return an error
ret = checkfailed("@ABC192");
} //Regular expression
return ret;
}
Solução
A sua descrição do problema não é muito claro. Pode-se substituir o método valite em um controle forma, o método de validação de uma fonte de dados e forma o método validatefield em cima da mesa. Esse é o meu conhecimento da versão 3.0. E como é que você quer dizer o "campo pai"? Eu presumo que o campo da tabela?
Se eu colocar mensagens de informação em cada um desses métodos eles só executar uma vez quando eu modificar um valor. Esse é o caso em 3.0. Eu não sei qual versão você está usando.
Talvez você poderia ser mais preciso sobre qual método de validação que você está testando?