Sc_Block_Display x Validação Chave Única - Bloco Aparece Indevidamente, como inibí-lo novamente?

Olá pessoal, tudo bem? Estou desenvolvendo um formulário. Preciso esconder um bloco somente em modo de inclusão. Utilizei as macros sc_btn_new e sc_display_block conforme abaixo:

if (sc_btn_new)
{
sc_block_display( blc_01, off);
}

Ocorre que após pressionar o botão “salvar”, há a validação da chave única, e quando há um erro, a aplicação apresenta novamente o bloco sem que seja solicitado. Inseri o código acima no evento onValidateFailure, resolveu para validação de campos obrigatórios, mas para validação de chave única, a situação permanece. Por favor, alguém poderia me ajudar com uma dica?

Para todo If existe um Else.
E eu colocaria o código no evento onload.

Olá Haroldo! Muito obrigado pelo retorno. Na verdade, a rotina está configurada no evento Onload, acabei esquecendo de informar. Havia um “Else”, mas quando formulário está em modo Insert, após o retorno das validações, a macro sc_btn_new retorna como false, entra no Else e os campos são exibidos, o que está fora dos requisitos estabelecidos para a aplicação para o caso de “Novos Registros”.

Então percebi:
1 - Quando as regras de “campos obrigatórios” são invalidadas no OnValidate, o SC apresenta a mensagem estabelecida e segue para o OnValidateFailure. Em seguida retorna para o Onload, contudo, a macro sc_btn_new = false, o que invalida o “IF”.

2 - Quando as regras definidas em “Chave Única” são invalidadas no OnValidate, o SC apresenta a mensagem de erro e permanece do OnValidate.

Dessa forma, após longa investigação de detalhes, inseri o código abaixo nos eventos OnValidateFailure e no próprio OnValidate:

if (sc_btn_insert)
{
sc_block_display( blc_01, off);
}

Restaram 2 dúvidas:
1 - Por que ao retornar para o Onload, mesmo em modo de “Insert”, detectado na macro sc_btn_insert nos eventos de validação, a macro sc_btn_new é alterada para “false”?

2 - Por que o SC não segue o mesmo processo durante a validação de ambas? ou seja, ambas não deveriam ser validadas no OnValidate e quando encontrado uma inconsistência, não deveriam seguir para OnValidateFailure ou meu entendimento está equivocado?

O código acima aplicado nos eventos solucionaram a questão, mas se puder me ajudar ou alguém puder me orientar com o processo ficarei muito grato, pois pode ser que meu entendimento esteja equivocado e esteja dificultando o desenvolvimento de minhas atividades.

Desde já, agradeço muito o tempo despendido para me ajudar. Muito obrigado

1 - Por que ao retornar para o Onload, mesmo em modo de “Insert”, detectado na macro sc_btn_insert nos eventos de validação, a macro sc_btn_new é alterada para “false”?

Porque entrou em modo de edição do registro que acabou de inserir.

2 - Por que o SC não segue o mesmo processo durante a validação de ambas? ou seja, ambas não deveriam ser validadas no OnValidate e quando encontrado uma inconsistência, não deveriam seguir para OnValidateFailure ou meu entendimento está equivocado?

A onValidate só é executada se vc tiver um código nela.
Campos obrigatório são de controle do próprio SC Validação da chave não sei se é um código pessoal seu.

Olá Haroldo, muito obrigado pelo seu retorno e esclarecimentos. Eu consegui resolver este assunto com um código mais simples validando a chave primária. Um forte abraço, muito grato.

1 Curtida