Validador de campo UF

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Iwasa
Usuário Nível 1
Usuário Nível 1
Mensagens: 45
Registrado em: 16 Ago 2007 08:27
Localização: PRES. PRUDENTE SP
Contato:

Validador de campo UF

Mensagem por Iwasa »

Código: Selecionar todos

/* Função ValidUF - Validador de campo Estado
   Para Clipper 5.3/Harbour 
   Para o fórum CLIPPER ONLINE
   Gilberto T. Iwasa 
   OBS.: Densenvolvi esta função utilizando Matriz e CodeBlock
            Este é sem o banco de dados

*/

Function MAIN()
local vUF:="SP"
Cls
SEtMode( 25,80 )

DO While Lastkey() # 27
@ 10,10 say "Digite o Estado:" get vUF pict "@!K" VALID ValidUF(vUF) ; IIF( vUF # SPACE(02) , Eval( {|| ValidUF(vUF)} ) , )
read

EndDO
Return .t.


// Função Validador ValidUF()
// **************************
Function ValidUF(cUF)
local lRET:=.F. 
local aUF:={}, nSEEK

    aADD(aUF, {"AC", "ACRE                "} )
    aADD(aUF, {"AP", "AMAPA               "} )
    aADD(aUF, {"AL", "ALAGOAS             "} )
    aADD(aUF, {"AM", "AMAZONAS            "} )
    aADD(aUF, {"BA", "BAHIA               "} )
    aADD(aUF, {"CE", "CEARA               "} )
    aADD(aUF, {"DF", "DISTRITO FEDERAL    "} )
    aADD(aUF, {"ES", "ESPIRITO SANTO      "} )
    aADD(aUF, {"GO", "GOIAS               "} )
    aADD(aUF, {"MA", "MARANHAO            "} )
    aADD(aUF, {"MT", "MATO GROSSO         "} )
    aADD(aUF, {"MS", "MATO GROSSO DO SUL  "} )
    aADD(aUF, {"MG", "MINAS GERAIS        "} )
    aADD(aUF, {"PA", "PARA                "} )
    aADD(aUF, {"PB", "PARAIBA             "} )
    aADD(aUF, {"PR", "PARANA              "} )
    aADD(aUF, {"PE", "PERNAMBUCO          "} )
    aADD(aUF, {"PI", "PIAUI               "} )
    aADD(aUF, {"RJ", "RIO DE JANEIRO      "} )
    aADD(aUF, {"RN", "RIO GRANDE DO NORTE "} )
    aADD(aUF, {"RS", "RIO GRANDE DO SUL   "} )
    aADD(aUF, {"RO", "RONDONIA            "} )
    aADD(aUF, {"RR", "RORAIMA             "} )
    aADD(aUF, {"SC", "SANTA CATARINA      "} )
    aADD(aUF, {"SP", "SAO PAULO           "} )
    aADD(aUF, {"SE", "SERGIPE             "} )
    aADD(aUF, {"TO", "TOCANTINS           "} )

nSEEK:=Ascan( aUF , {|x| x[1]==cUF} )

If cUF==Space(02)
   @row(),col()+1 say Space(20)
   lRET=.F.
  Elseif nSEEK==0 
   @row(),col()+1 say " - [UF] INVALIDO!!!     "
   lRET:=.F.
  Else 
   @row(),col()+1 say " - " + aUF[nSEEK][2]
   lRET:=.T.
Endif

Return(lRET)
CLIPPER 5.3b/BLINKER 7.0/RDD CDX => Migrando para HARBOUR/RDD CDX

"Podemos construir um mundo melhor, compartilhando informações. Compartilhar conhecimento é edificar um mundo melhor para todos!".

http://iwasa.4shared.com/
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Re: Validador de campo UF

Mensagem por gvc »

Tente assim.
Vc declara e carrega o array com os estados no inicio do sistema e não cada vez que chama a função.
Vc coloca a informação linha e coluna para mostra o resultado.
Sua função verifica se o parâmetro esta vazio e já retorna .F., evitando de fazer a pesquisa desnecessária.

Código: Selecionar todos

***
***
***
Function MAIN()
local vUF := "  "

public auf

Cls
SEtMode( 25,80 )

auf := {{"AC", "ACRE                "},;
      {"AP", "AMAPA               "},;
      {"AL", "ALAGOAS             "},;
      {"AM", "AMAZONAS            "},;
      {"BA", "BAHIA               "},;
      {"CE", "CEARA               "},;
      {"DF", "DISTRITO FEDERAL    "},;
      {"ES", "ESPIRITO SANTO      "},;
      {"GO", "GOIAS               "},;
      {"MA", "MARANHAO            "},;
      {"MT", "MATO GROSSO         "},;
      {"MS", "MATO GROSSO DO SUL  "},;
      {"MG", "MINAS GERAIS        "},;
      {"PA", "PARA                "},;
      {"PB", "PARAIBA             "},;
      {"PR", "PARANA              "},;
      {"PE", "PERNAMBUCO          "},;
      {"PI", "PIAUI               "},;
      {"RJ", "RIO DE JANEIRO      "},;
      {"RN", "RIO GRANDE DO NORTE "},;
      {"RS", "RIO GRANDE DO SUL   "},;
      {"RO", "RONDONIA            "},;
      {"RR", "RORAIMA             "},;
      {"SC", "SANTA CATARINA      "},;
      {"SP", "SAO PAULO           "},;
      {"SE", "SERGIPE             "},;
      {"TO", "TOCANTINS           "}}

while .T.
   @ 10,10 say "Digite o Estado:" get vUF picture "@!K" valid validuf(vuf, 10, 30) // ; IIF( vUF # SPACE(02) , Eval( {|| ValidUF(vUF)} ) , )
   read

   if lastkey() = 27
      exit
   end
end

return(Nil)


// Função Validador ValidUF()
// **************************
function validuf(cuf, q_linha, q_coluna)
local nseek

if empty(cuf)
   @ q_linha, q_coluna say space(20)
   return(.F.)
end

nseek := ascan(auf , {|x| x[1] == cuf})

if nseek == 0
   @ q_linha, q_coluna say " - [UF] INVALIDO!!!     "
   return(.F.)
end

@ q_linha, q_coluna say " - " + aUF[nSEEK, 2]
return(.T.)
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Responder