- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Validação de Campo - regra para que não seja permitida a digitação de qtd que seja fora do múltiplo
×
Linguagem de Programação ADVPL
Perguntas Validação de Campo - regra para que não seja permitida a digitação de qtd que seja fora do múltiplo
- Alessandro Villar
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 121
- Obrigados Recebidos: 0
11 anos 10 meses atrás #9052
por Alessandro Villar
Validação de Campo - regra para que não seja permitida a digitação de qtd que seja fora do múltiplo foi criado por Alessandro Villar
Olá pessoal, primeiramente feliz Ano Novo!!
eu preciso de uma ajuda, eu não manjo muito de programação, eu preciso criar uma rotina para validação de um campo no cadastro de produtos, foi criado um campo de quantidade múltipla no cadastro de produtos,eu preciso criar uma regra para que não seja permitida a digitação de quantidade que esteja fora do múltiplo definido no campo, se alguém puder me ajudar eu agradeço muito.
Obrigado !!
eu preciso de uma ajuda, eu não manjo muito de programação, eu preciso criar uma rotina para validação de um campo no cadastro de produtos, foi criado um campo de quantidade múltipla no cadastro de produtos,eu preciso criar uma regra para que não seja permitida a digitação de quantidade que esteja fora do múltiplo definido no campo, se alguém puder me ajudar eu agradeço muito.
Obrigado !!
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
11 anos 10 meses atrás #9055
por kanaamlrr
Respondido por kanaamlrr no tópico Re: Validação de Campo - regra para que não seja permitida a digitação de qtd que seja fora do múltiplo
Acho que esse trecho abaixo resolve seu problema.
(Obs: não testei)
User Function vldQtd(nValDig, nMultip)
lRet := .T.
If (nValDig % nMultip) <> 0
lRet := .F.
MsgAlert("Não é múltiplo")
EndIf
Return lRet
Os valores que estão como parâmetro seria o valor digitado e o número que esse valor deve ser multiplo.
(Obs: não testei)
User Function vldQtd(nValDig, nMultip)
lRet := .T.
If (nValDig % nMultip) <> 0
lRet := .F.
MsgAlert("Não é múltiplo")
EndIf
Return lRet
Os valores que estão como parâmetro seria o valor digitado e o número que esse valor deve ser multiplo.
Por favor Acessar ou Registrar para participar da conversa.
- Alessandro Villar
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 121
- Obrigados Recebidos: 0
11 anos 10 meses atrás #9065
por Alessandro Villar
Respondido por Alessandro Villar no tópico Re: Validação de Campo - regra para que não seja permitida a digitação de qtd que seja fora do múltiplo
Então vamos ver se eu consigo explicar melhor, eu irei ter que utilizar 3 tabelas SB1, SUA, SUB, no módulo Call Center.
Eu tenho que criar uma rotina que eu consiga fazer esse calculo utilizando essas tabelas. Eu acho que essa rotina que você me passou está faltando algo não está? Me desculpe mais é que eu não manjo de programação rsrs..
Eu tenho que criar uma rotina que eu consiga fazer esse calculo utilizando essas tabelas. Eu acho que essa rotina que você me passou está faltando algo não está? Me desculpe mais é que eu não manjo de programação rsrs..
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
11 anos 10 meses atrás #9067
por kanaamlrr
Respondido por kanaamlrr no tópico Re: Validação de Campo - regra para que não seja permitida a digitação de qtd que seja fora do múltiplo
Certo!
Seguinte, você vai precisar adicionar a função U_VLDQTD() no validação de usuário do campo UB_QUANT.
Depois disso você vai compilar a função abaixo no seu ambiente.
User Function vldQtd()
Local lRet := .T.
SB1->(dbSetOrder(1))
SB1->(dbSeek(xFilial("SB1")+aCols[n][aScan(aHeaders,{|x| x[1]=="UB_PRODUTO"})]))//TEM QUE VERIFICAR ESSE SEEK
If (M->UB_QUANT % SB1->B1_X_MULT) <> 0//ACERTAR COM O NOME DO SEU CAMPO MULTIPLO DA SB1
lRet := .F.
MsgAlert("Não é múltiplo")
EndIf
Return lRet
Se não funcionar posta em qual rotina você está tentando fazer isso, ou o nome do fonte da rotina para poder verificar melhor os nomes das variáveis.
Seguinte, você vai precisar adicionar a função U_VLDQTD() no validação de usuário do campo UB_QUANT.
Depois disso você vai compilar a função abaixo no seu ambiente.
User Function vldQtd()
Local lRet := .T.
SB1->(dbSetOrder(1))
SB1->(dbSeek(xFilial("SB1")+aCols[n][aScan(aHeaders,{|x| x[1]=="UB_PRODUTO"})]))//TEM QUE VERIFICAR ESSE SEEK
If (M->UB_QUANT % SB1->B1_X_MULT) <> 0//ACERTAR COM O NOME DO SEU CAMPO MULTIPLO DA SB1
lRet := .F.
MsgAlert("Não é múltiplo")
EndIf
Return lRet
Se não funcionar posta em qual rotina você está tentando fazer isso, ou o nome do fonte da rotina para poder verificar melhor os nomes das variáveis.
Por favor Acessar ou Registrar para participar da conversa.
- Alessandro Villar
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 121
- Obrigados Recebidos: 0
11 anos 10 meses atrás #9072
por Alessandro Villar
Respondido por Alessandro Villar no tópico Re: Validação de Campo - regra para que não seja permitida a digitação de qtd que seja fora do múltiplo
Eu fiz da seguinte forma veja se está correto assim por favor:
dbSelectArea ("SB1")
dbSetOrder (1)
If dbSeek (xFilial ("SB1")+ _cProd)
_nMultip:= SB1->B1_QTMULT
EndIf
_cProd := aCols[n][_nPQtde]
eu acho que até esse trecho deve estar correto, agora qual é o calculo que devo fazer? Por que assim, pra entender melhor, criei um campo na SB1 chamado B1_QTMULT que é para quantidade múltipla, o valor que tiver nesse campo não pode ser diferente do que tiver lá, agora teria que fazer o cáculo correto?
dbSelectArea ("SB1")
dbSetOrder (1)
If dbSeek (xFilial ("SB1")+ _cProd)
_nMultip:= SB1->B1_QTMULT
EndIf
_cProd := aCols[n][_nPQtde]
eu acho que até esse trecho deve estar correto, agora qual é o calculo que devo fazer? Por que assim, pra entender melhor, criei um campo na SB1 chamado B1_QTMULT que é para quantidade múltipla, o valor que tiver nesse campo não pode ser diferente do que tiver lá, agora teria que fazer o cáculo correto?
Por favor Acessar ou Registrar para participar da conversa.
- Alessandro Villar
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 121
- Obrigados Recebidos: 0
11 anos 10 meses atrás #9073
por Alessandro Villar
Respondido por Alessandro Villar no tópico Re: Validação de Campo - regra para que não seja permitida a digitação de qtd que seja fora do múltiplo
Cara eu fiz o trecho do calculo, mais está dando erro o que pode ser? erro de syntax
dbSelectArea ("SB1")
dbSetOrder (1)
If dbSeek (xFilial ("SB1")+ _cProd)
_nMultip:= SB1->B1_QTMULT
EndIf
_cProd := aCols[n][_nPQtde]
If (B1_QTD_MULT / UB_QUANT) <> INT (B1_QTD_MULT / UB_QUANT) // Se valor informado for diferente do digitado
Return (.F.)
MsgAlert("Não é múltiplo")
Else
Return (.T.)
EndIF
dbSelectArea ("SB1")
dbSetOrder (1)
If dbSeek (xFilial ("SB1")+ _cProd)
_nMultip:= SB1->B1_QTMULT
EndIf
_cProd := aCols[n][_nPQtde]
If (B1_QTD_MULT / UB_QUANT) <> INT (B1_QTD_MULT / UB_QUANT) // Se valor informado for diferente do digitado
Return (.F.)
MsgAlert("Não é múltiplo")
Else
Return (.T.)
EndIF
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Validação de Campo - regra para que não seja permitida a digitação de qtd que seja fora do múltiplo
Tempo para a criação da página:0.120 segundos