Campos

Boa tarde senhores, tenho a seguinte duvida…
Tenho tres campos (campo1, campo2, campo3), porem na hora que eu digito alguma coisa no campo1 e depois digito outra coisa no campo2, o que eu digitei no campo1 não pode ser repetir no campo2, se a pessoa for digitar a mesma coisa que já digitou no campo1 tenho que dar uma mensagem que não pode ser repetir. Porém essas informação não vao puxar do banco a pessoa ainda vai estar inserindo (ou seja não inseriu ainda no banco, com isso eu bloqueio que ela digite alguma coisa que já digitou no campo1). Resumindo não posso deixar ela digitar nada repetido nos 3 campos, mesmo que ela venha digitar primeiro o campo3, vai ter que vomprar tbm para nao digitar no campo2. mesmo que ela faça a inclusao de traz para frente. Obrigado.

onvalidate:

if ({c1}=={c2} || {ci1}=={c3}):
sc_error_message(“Campo1 e Campo2 não podem ser iguais entre si, o mesmo para o Campo3!”);
sc_error_exit();
endif;

if ({c2}=={c3}):
sc_error_message("“Campo2 e Campo3 não podem ser iguais entre si!”);
sc_error_exit();
endif;

Boa tarde, Haroldo. Desculpe te pertubar mais o forum é para isso mesmo… rsrsr
Vamos lá
Coloquei no OnValidate e entre outros,
Fiz um evento ajax no on focus e até no onchange.
E ele ja da a mensagem parece que não estar comparando.
Ele ja compara ate se nao tiver nada. No onfocus

if ({componente1}=={componente2} || {componente1}=={componente3}):
sc_error_message(“Campo1 e Campo2 não podem ser iguais entre si, o mesmo para o Campo3!”);
sc_error_exit();
endif;

if ({componente2}=={componente3}):
sc_error_message(“Campo2 e Campo3 não podem ser iguais entre si!”);
sc_error_exit();
endif;


AA.jpg

Não foi detalhado aqui se os campos são obrigatórios ou não:

Se os campos não são obrigatórios acrescente:

& ({campo1} != ‘’ & {campo2} != ‘’ & {campo3} != ‘’)

  • Eu não usaria nos eventos Ajax.

Me desculpa perguntar, mas qual o seu conhecimento de programação e lógica?

Sou analista de sistemas, mais tem muito tempo que estive fora da área, na verdade nunca trabalhei na área, estou trabalhando agora.
Me especializei em Redes.

Entendi.

Então, se for usar em ajax deve criar um método que faça a comparação e sempre retorne verdadeiro ou falso.
E aplique o método apenas nos eventos onchange de cada campo pode até forçar o foco do cursor ao campo do erro (do onchange).
Mas nos eventos ajax não usaria mensagem de erro, apenas de alerta com sc_ajax_message().
Nos eventos ajax você pode na primeira linha:

if (empty({campo1})) Return;

Na onvalidate obrigatoriamente, pois não pode permitir salvar o registro.

Se não a operação fica ruim para o usuário.

Dentro disso:

if ({componente1}=={componente2} || {componente1}=={componente3}):
sc_error_message(“Campo1 e Campo2 não podem ser iguais entre si, o mesmo para o Campo3!”);
sc_error_exit();
endif;

if ({componente2}=={componente3}):
sc_error_message(“Campo2 e Campo3 não podem ser iguais entre si!”);
sc_error_exit();
endif;

Aonde uso isso: & ({campo1} != ‘’ & {campo2} != ‘’ & {campo3} != ‘’)

Da uma olhada na imagem o que tenho no OnChange (tenho tres desses)!

E outra coisa esse campos (compontente1, 2 3) não são obrigatorios mais irei ate colocar obrigatorio pois tem que ser!

Ve se consegue me ajudar, Please.


BB.jpg

Na onvalidate:

if (({componente1}=={componente2} || {componente1}=={componente3}) & ({componente1}!=’’ & {componente2}!=’’ & {componente2}!=’’)):
sc_error_message(“Campo1 e Campo2 não podem ser iguais entre si, o mesmo para o Campo3!”);
sc_error_exit();
endif;

if ( ({componente2}=={componente3}) & ({componente1}!=’’ & {componente2}!=’’) ):
sc_error_message(“Campo2 e Campo3 não podem ser iguais entre si!”);
sc_error_exit();
endif;

Quanto a imagem, acredito que não se refira ao problema desse tópico, deve abrir outro tópico com a dúvida em quentão,

Um assunto por tópico ajuda a manter a organização e a pesquisa para outros com o mesmo problema.

Poxa meu amigo,

A imagem só coloquei, para te mostrar, para ver se serviria para vc poder me ajudar no assunto desse tópico mesmo, mais percebi que não precisava dela, para vc enxergar meu problema melhor!

To testando o que vc postou.

Obrigado já te falo.

Desculpa, é que não vi relação do código da imagem com a comparação entre os campos.
Se os campos aceitarem alfanumérico o select da imagem causará erro.
Usar sc_error_message causa parada obrigatória no processamento ao submeter o formulário.
Achei estranho seu select e a condição de não encontrar o registro, caso encontre esvazia alguns campos e se encontrar alimenta outros campos.
Eu particularmente não gosto de sc_field_readonly. Prefiro sc_field_display ou sc_field_disabled.

Se tornar os campos obrigatórios o primeiro código sugerido resolve.

Muito bom dia grande Haroldo, obrigado pela solução. E pela força. Funcionou! o que vc fez.
Forte abc.