× Linguagem de Programação ADVPL

Perguntas VALIDAÇÃO DE CAMPO

Mais
10 anos 3 meses atrás #24113 por rubem_mn
Prezado, bom dia!
Sou iniciante em advpl e estou com dificuldade para desenvolver essa rotina.
O campo ZJ_ORDFAB faz consulta na tabela SD3 eu quero validar esse campo para usuário não digita ORDEM DE FABRICAÇÃO incorretamente e incoerente com o cadastro da tabela SD3.

Obrigado!

#include "rwmake.ch"
#include "protheus.ch"


User Function FBQIP100()

cOrdemFabricao := M->ZJ_ORDFAB //Classificacao

lRet := .T.

IF ExistCpo("SD3", cOrdemFabricao)

ELSE
ALERT("ORDEM NÃO EXISTE")

lRet := .F.
ENDIF

RETURN lRet

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 3 meses atrás #24138 por THALESCOTR
Respondido por THALESCOTR no tópico VALIDAÇÃO DE CAMPO
Boa tarde Rubem,

você pode fazer desses dois jeitos:

//---Via DBSEEK

DbSelectArea("SD3")
DbSetOrder(1)
If !DbSeek(xFilial("SD3")+M->ZJ_ORDFAB) //se você tiver o produto na sua tabela ZJ acrescente ao lado +M->campo do produto
//!Dbseek = Retorna .F. (Não existe)
msgStop("Ordem não existe")
Return .F.
EndIf

OBS: Verifique se o tamanho do seu campo ZJ_ORDFAB é o mesmo do campo D3_OP, para que o dbseek funcione corretamente.


//---Via SELECT

cQuery := "SELECT D3_OP FROM "+RetSqlName("SD3")
cQuery += " WHERE D3_OP = '"+M->ZJ_ORDFAB+"' AND D_E_L_E_T_ = ' '"

If Select("QR1") <> 0
DBSelectArea("QR1")
DBCloseArea()
Endif

cQuery := ChangeQuery(cQuery)
dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),"QR1",.T.,.F.)

If empty(QR1->D3_OP) //não encontrou
msgStop("Ordem não existe")
Return .F.
EndIf


Att
Thales

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 3 meses atrás #24191 por rubem_mn
Respondido por rubem_mn no tópico VALIDAÇÃO DE CAMPO
Thales, desculpa pela demora para responder.

-
Agora como faço caso exista ordem de fabricação preencha alguns campos?

Por exemplo: orde 2003369 preenche: produto


Estou criando meu gatilho mais infelizmente não está funcionando.

Tem algum código para esse cenário?

Obrigado!

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 3 meses atrás #24194 por THALESCOTR
Respondido por THALESCOTR no tópico VALIDAÇÃO DE CAMPO
Bom dia Rubem,

você pode utilizar o mesmo fonte da validação do campo.

//Exemplo via Select, por exemplo:

cQuery := "SELECT D3_OP FROM "+RetSqlName("SD3")
cQuery += " WHERE D3_OP = '"+M->ZJ_ORDFAB+"' AND D_E_L_E_T_ = ' '"

If Select("QR1") <> 0
DBSelectArea("QR1")
DBCloseArea()
Endif

cQuery := ChangeQuery(cQuery)
dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),"QR1",.T.,.F.)

If empty(QR1->D3_OP) //não encontrou
msgStop("Ordem não existe")
Return .F.
Else //Encontrou
M->campoproduto := "xxxxxx" //preenche o campo do produto
OU
//Se você utiliza GetDados
For Nx:=1 To Len(Acols)
Acols{Nx][GdFieldPos("campoproduto")] := "xxxxx" //para cada linha é preenchido o valor xxxxx
Next Nx
Return .T.
EndIf




//
EXEMPLO GATILHO

Obs: Crie o gatilho do campo M->ZJ_ORDFAB para o M->ZJ_ORDFAB e a regra chamando U_seufonte()

Local cRet := M->ZJ_ORDFAB

cQuery := "SELECT D3_OP FROM "+RetSqlName("SD3")
cQuery += " WHERE D3_OP = '"+M->ZJ_ORDFAB+"' AND D_E_L_E_T_ = ' '"

If Select("QR1") <> 0
DBSelectArea("QR1")
DBCloseArea()
Endif

cQuery := ChangeQuery(cQuery)
dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),"QR1",.T.,.F.)

If empty(QR1->D3_OP) //não encontrou
msgStop("Ordem não existe")
cRet := "" //aqui muda, retorna vazio para o usuário digitar novamente
Else //Encontrou
M->campoproduto := "xxxxxx" //preenche o campo do produto
OU
//Se você utiliza GetDados
For Nx:=1 To Len(Acols)
Acols{Nx][GdFieldPos("campoproduto")] := "xxxxx" //para cada linha é preenchido o valor xxxxx
Next Nx
EndIf

Return cRet //Retorna o valor do campo digitado se encontrar, senão retorna vazio para ser digitado novamente




Att
Thales

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.083 segundos
Joomla templates by a4joomla