Olá pessoal…
Hoje vou mostrar uma função desenvolvida que serve para validar todos os campos de um aCols conforme a parametrização do aHeader.
Imagine o seguinte cenário, você fez um ponto de entrada para atualizar o aCols da tela de pedidos de venda, e deixou com que o usuário digitasse os campos, porém, as validações padrões dos campos não foram executadas, para isso, foi desenvolvido uma rotina, onde ao atualizar o aCols e o aHeader, ele executa as validações de campo e mostra uma mensagem dos campos que deram problema.
//Bibliotecas
#Include "Protheus.ch"
/*/{Protheus.doc} zVldGrid
Executa as validações da Grid
@author Atilio
@since 18/02/2017
@version 1.0
@type function
/*/
User Function zVldGrid()
Local aArea := GetArea()
Local lOk := .T.
Local aColsAux := aCols
Local aHeaderAux := aHeader
Local nLinBkp := n
Local nAtual := 0
Local nColAtu := 0
Local cCampoAtu := 0
Local cVldPad := ""
Local cVldUsr := ""
Local cMsgAux := ""
Local cVarBkp := __ReadVar
//Percorre as linhas
For nAtual := 1 To Len(aColsAux)
n := nAtual
//Percorre o cabeçalho da linha atual
For nColAtu := 1 To Len(aHeaderAux)
cCampoAtu := aHeaderAux[nColAtu][2]
__ReadVar := cCampoAtu
cVldPad := GetSX3Cache(cCampoAtu, 'X3_VALID')
cVldUsr := GetSX3Cache(cCampoAtu, 'X3_VLDUSR')
//Se tiver validação padrão, executa
If !Empty(cVldPad)
lOk := &(cVldPad)
If !lOk
cMsg += "- Campo "+cCampoAtu+CRLF
EndIf
EndIf
//Se tiver ok e tiver validação de usuário, executa
If lOk .And. !Empty(cVldUsr)
lOk := &(cVldUsr)
If !lOk
cMsg += "- Campo "+cCampoAtu+CRLF
EndIf
EndIf
Next
Next
//Caso tenha mensagem de erro nos campos, mostra ao usuário
If !Empty(cMsg)
Aviso("Atenção", "Erros nos campos: "+CRLF+cMsg, {"OK"}, 2)
EndIf
__ReadVar := cVarBkp
n := nLinBkp
RestArea(aArea)
Return lOk
Bom pessoal, por hoje é só.
Abraços e até a próxima.
