PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
Obrigar a preencher campo
Versão:
12.1.25
Plataforma:
Microsoft
Complemento:
DB:
SQL Server
Complemento:
LinkedIn
Mensagem do Enviar e-mail Abrir o Perfil do usuário AGMC AGMC em 24/06/2020, 10:24 h
Local: AC  Registro: 04/07/2014  Postagens: 251
Bom dia parceiros. Seguinte, meu protheus é série 3, não é possível inserir ponto de entrada mas o que eu quero acredito que dê pra fazer através de um fonte. Criei uma rotina e tem dois campos que um depende do outro porem preciso forçar o usuário a preencher um se determinada opção no outro for selecionada. Tentei desta forma:

While M->ZZ3_STATUS=="2".AND.Empty(M->ZZ3_MOT)
   MsgStop("Campo Obrigatório")
EndDo

Porém como o campo já está vazio inicialmente, ele entra em loop infinito, testei informando Return .F. mas ele só aparece a mensagem uma vez e libera para o usuário confirmar o cadastro sem informar o campo.

Atenciosamente,

Alan Gustavo
Grupo Miragina
skype:alan_miragina

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário LHC LHC em 26/06/2020, 09:54 h
Local: ES  Registro: 11/05/2013  Postagens: 49
Bom dia, tenta o ajuste abaixo, mais fica difícil entender o que você quer só com um trecho do código e já que sua janela é personalizada. Acho melhor dependendo do que você quer fazer usar o If .

While M->ZZ3_STATUS=="2" .AND. Empty(M->ZZ3_MOT ==‘‘)
   MsgStop("Campo Obrigatório")
EndDo


Atenciosamente,
Luis Henrique

Mensagem do Enviar e-mail Abrir o Perfil do usuário AGMC AGMC em 26/06/2020, 10:33 h
Local: AC  Registro: 04/07/2014  Postagens: 251
Bom dia LHC, primeiramente obrigado por responder, estou querendo forçar o usuário a preencher o campo ZZ3_MOT enquanto o campo ZZ3_STATUS=="2". Não utilizei o IF por que quero que fiquei no loop até o usuário preencher.

Atenciosamente,

Alan Gustavo
Grupo Miragina
skype:alan_miragina

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário PIERRY14 PIERRY14 em 26/06/2020, 10:50 h
Local: PB  Registro: 15/08/2009  Postagens: 14
Pode deixar o IF mesmo cara
A chamada dessa função está no campo "Valid. Usuário" ?
É só você colocar o Return como FALSO (.F.), quando não atender essa condição.

User Function xVldZZ3()

Local lRet := .T.

If M->ZZ3_STATUS=="2" .AND. Empty(M->ZZ3_MOT =='')
   MsgStop("Campo Obrigatório")
   lRet := .F.
EndDo

Return lRet

Algo mais ou menos assim
Aí lá no X3_VLDUSER, tem que ter a chamada dessa função U_xVldZZ3()

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário PIERRY14 PIERRY14 em 26/06/2020, 10:52 h
Local: PB  Registro: 15/08/2009  Postagens: 14
Corrigindo

User Function xVldZZ3()

Local lRet := .T.

If M->ZZ3_STATUS=="2" .AND. Empty(M->ZZ3_MOT ==‘‘)
   MsgStop("Campo Obrigatório")
   lRet := .F.
EndIf

Return lRet

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário EMERSON.EN EMERSON.EN em 26/06/2020, 10:55 h
Local: SP  Registro: 20/08/2010  Postagens: 532
não seria mais fácil colocar a condição diretamente na validação do campo?
ficaria assim:
M->ZZ3_STATUS<>‘2‘ .OR. !EMPTY(M->ZZ_MOT)


Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal