×
Linguagem de Programação ADVPL
Perguntas VALIDAÇÃO DE CAMPO
- rubem_mn
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 60
- Obrigados Recebidos: 0
10 anos 3 meses atrás #24113
por rubem_mn
VALIDAÇÃO DE CAMPO foi criado 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
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.
- THALESCOTR
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 124
- Obrigados Recebidos: 0
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
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.
- rubem_mn
- Autor do Tópico
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 60
- Obrigados Recebidos: 0
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!
-
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.
- THALESCOTR
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 124
- Obrigados Recebidos: 0
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
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