Boa noite...
Gabriel, eu uso a muito tempo, antes mesmo do Pctoledo.com.br uma rotinas que vieram como exemplo no clippersclub.com.br Eu particularmente acho muito prático e quando preciso fazer alguma comparação abro o dbf e localizo o campo. Cada ação tem uma função respectiva.
Para criar as variáveis:
Sele Area
FOR NI:= 1 TO FCOUNT() ; &(TYPE(FIELD(NI))+FIELD(NI)) := &(FIELD(NI)) ; NEXT
Para essa ação não pode criar variável tem que ser na função que a variável vai ser usada mesmo.
Por exemplo você tem um Arquivo Cliente com os campos
Codigo - C - 5
Nome - C - 40
DataNasc - D - 10
Salário - N - 12,2
Aà você usa
Sele Area
FOR NI:= 1 TO FCOUNT() ; &(TYPE(FIELD(NI))+FIELD(NI)) := &(FIELD(NI)) ; NEXT
Serão criadas as variáveis:
cCodigo
cNome
dDatanasc
nSalario
Cada variável será criada com o inÃcio do tipo da variável no caso Nome -> cNome, Datanasc -> dDatnasc, Salario->nSalario.
Para Limpar as Variáveis
Aqui já pode ser criada uma função para uso genérico
FUNCTION Limpa_Var( cALIAS)
LOCAL nI
DBSELECTAREA(cALIAS)
FOR nI:= 1 TO FCOUNT() ; &(TYPE(FIELD(nI))+FIELD(nI)) := IF(TYPE(FIELD(nI))=="C",SPACE(LEN(&(FIELD(nI)))),IF(TYPE(FIELD(nI))=="N",0,IF(TYPE(FIELD(nI))=="L",.F.,IF(TYPE(FIELD(nI))=="D",CTOD(""),""))) ) ; NEXT
RETURN NIL
Uso Limpa_Var('Cli')
Pronto todas as variáveis da área Cli serão zeradas, limpas.
Para buscar dados do dbf.
FUNCTION Igual_Var( cALIAS )
LOCAL nI
DBSELECTAREA( cALIAS )
FOR nI:= 1 TO FCOUNT() ; &(TYPE(FIELD(nI))+FIELD(nI)) := &(FIELD(nI)) ; NEXT
RETURN NIL
Uso Igual_var('Cli')
A mesma coisa de digitar cCodigo := Cli->Codigo, cNome:=Cli-Nome, dDataNasc:=Cli->dDatanasc, nSalario:=Cli->Salario
Imagina um dbf com 30 campos, vai ser feito automaticamente e você não atribuirá um campo a uma variavel errada.
Para gravar dados no dbf
FUNCTION Grava_Var( cALIAS )
LOCAL nI
Hb_Default( @cAlias, Select() )
SELE &cALIAS
FOR nI := 01 TO FCOUNT() ;_FIELD->&(FIELD(nI)) := &(TYPE(FIELD(nI))+FIELD(nI)) ; NEXT
RETURN NIL
Uso
Grava_var('Cli')
A operação inversa do Igual_Var()... Na mesma comparação evita salvar uma variável em um campo errado.
E por último
FUNCTION Apaga_Var( cAlias )
LOCAL nI
FOR nI := 01 TO FCOUNT(); NomeCampo := (TYPE(FIELD(nI))+FIELD(nI)) ; RELEASE &NomeCampo ; NEXT
RETURN NIL
Uso
Apaga_var('Cli')
Cuidado ao usar esta função...kkkk... eu uso mais tem funções de cadastro... em funções de movimentação não recomendo. É claro que o harbour apaga as variáveis criadas na função, quando você a destroi, mas, que mal tem estar no controle..
Bom analise e tire suas conclusões. O Próprio Ramalho escreveu um capÃtulo inteiro sobre isso. O que você ganha produtividade e organização. Só depende de você...
Eu uso e tiro muito proveito !!! Esta é minha opinião...
Rubens