erro while ponto de entrada sb1

Boa tarde, alguem poderia me ajudar. estou fazendo uma consulta para saber se foi alterado algum produto . Na consulta do while , ele nao funciona da forma que eu gostaria, gostaria que ele fizesse a consulta,deu true, ele voltasse para a rotina, mas ele fica só repetindo o msg e não volta para a rotina. Criei 2 campos e estou usando esse codigo.

INCLUDE "protheus.ch"

User Function A010TOK() Local aArea := GetArea() Local aAreaB1 := SB1->(GetArea()) Local lRet := .T.

//Se for inclusão //If INCLUI // MsgInfo("Estou em uma inclusão!", "Atenção") //EndIf

//Se for alteração If ALTERA

DO WHILE B1_CUSTOM = '1' .AND. M->B1_VALID = 01 MSGAlert("Produto Alterado !!") MsgAlert("Favor preencher o campo 'Alterações' na aba 'Outros'!") B1_VALID++ RestArea(aAreaB1) RestArea(aArea)

Return lRet

ElseIf M->B1_VALID = 02 MsgInfo("Favor preencher o campo 'Alterações' na aba 'Outros'!","Este Produto sofreu alterações !") //DO WHILE B1_CUSTOM = '1' MsgAlert("Favor preencher o campo 'Alterações' na aba 'Outros'!")

lRet := MSGRETRYCANCEL("Deseja mesmo alterar este produto ?","Atenção") //BREAK //Enddo B1_VALID++ RestArea(aAreaB1) RestArea(aArea) //Endif Return lRet

ElseIf M->B1_VALID >= 03 MsgAlert("Favor preencher o campo 'Alterações' na aba 'Outros'!","Este Produto sofreu alterações !") //WHILE B1_CUSTOM = '1' MsgAlert("Favor preencher o campo 'Alterações' na aba 'Outros'!") // Enddo lRet := MSGRETRYCANCEL("Para Mudanças neste campo, Por Favor preencha o campo alterações !!") //B1_VALID++ //RestArea(aAreaB1) //RestArea(aArea) //Endif //Return lRet

ElseIf M->B1_CUSTOM != '' MsgAlert("o campo alterações ta vazio ") lRet := MsgYesNo("nao deixa o custom vazio ") //RestArea(aAreaB1) //RestArea(aArea) //Endif //Return lRet

//Endif MsgInfo("Estou em uma alteração!", "Atenção") EndIf

//Se for cópia //If lCopia // MsgInfo("Estou em uma cópia!", "Atenção") //EndIf ENDDO

lRet := MsgYesNo("Deseja continuar", "Atenção")

RestArea(aAreaB1) RestArea(aArea) Return lRet

compartilhar
  • Lusquinhas coloca o fonte como anexo ou formata ele aqui porque está bem difícil de entender o programa.

    Cirilo Rocha   13 de Feb de 2023
  • Lucas se entendi bem vc quer ao salvar um produto verificar se o mesmo foi alterado e barrar ou não baseado em alguma regra certo?

    Se sim você não precisa do while, pois o ponto de entrada escolhido já executa no final depois do usuário terminar a entrada de dados.

    VINICIUS GATI   14 de Feb de 2023
  • Assim sendo você pode só fazer a validaćão normal e se retornar .t. no PE ele vai salvar ok o produto, se você retornar .f. do PE a tela não vai fechar, da forma como você precisa.

    VINICIUS GATI   14 de Feb de 2023
  • Então já estou usando meio que resolvendo por IFs, mas qual é o funcionamento? o Produto já está salvo, o usuario vai fazer alterações. dai o é verificado se o produto já foi alterado, e salvo em um novo campo quais alterações foram feitas.

    Lucas de Paulo Santos   14 de Feb de 2023
  • não, o M-> é o que está em memória e não já salvo no banco. O seu PE deve usar o M-> e comparar com o XXX-> para ver se mudou valor. XXX é o alias da tabela que vc ta trabalhando no caso o SB1->....

    VINICIUS GATI   15 de Feb de 2023
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags while if ou faça a sua própria pergunta.