Você está na página 1de 1

Function GeraCodigo

Local cDele, cArea, cChave, cCampo, cRetorno


*!* Define OFF para SET DELETED e armazena o valor atual em cDele
cDele = SET("DELETED")
SET DELETED OFF
*!* Armazena o nome da área de trabalho atual
cArea = ALLTRIM(ALIAS())
*!* Armazena em cChave o nome do primeiro campo da tabela
*!* Isto porque a função foi escrita de forma genérica para
*!* ser utilizada com qualquer tabela. Neste caso, o campo de
*!* chave primaria deve ser sempre o primeiro campo.
cChave = ALLTRIM(FIELD(1))
cCampo = cArea + '.'+ cChave
DECLARE cMaiorValor(1)
cMaiorValor(1) = '0'
*:*Utiliza uma instrucito SQL para encontrar c maior código
*!*, na tabela e soma + 1 ao maior valor encontrado
SELECT MAX(.&cCampo) FROM &cArea INTO ARRAY cMaiorValor
*:* cRetorno = PADL(VAL(cMaiorValor(1))+1,LEN(GcCampo),'0')
nMascara = Len(&cCampo)
cMascara = "@L" + Replicate("9",nMascara)
cRetorno = Transform(Val(cMaiorValor(1))+1,cMascara)
*!*Define c Status Original de SET DELETED
SET DELETED &cDele
Return cRetorno

Você também pode gostar