Opção pra trocar vários campos
Enviado: 12 Ago 2020 18:45
Acabo de usar aqui, e achei interessante:
Quando é troca direta, mais fácil.
Só fiquei na dúvida sobre a macro.
Poderia ter usado FieldPut( FieldNum( aCampo[ 1 ] ), FieldGet( FieldNum( aCampo[ 2 ] ) ) ).
Acho que é conhecido de todos.
FieldPut() é pra gravar, precisa do número do campo
FieldGet() é pra ler, precisa do número do campo
FieldNum() é o número do campo, para a string fornecida.
Neste caso, alguns campos continuam do mesmo tipo, mas outros mudaram de caractere para numérico.
Quando é troca direta, mais fácil.
DO WHILE ! Eof()
RecLock()
FOR EACH aCampo IN { ;
{ "CPCODIGO", "A_CODIGO" }, ;
{ "CPNOME", "A_NOME" }, ;
{ "CPGRUPO", "A_GRUPO" }, ;
{ "CPTIPO", "A_TIPO" }, ;
{ "CPGRAU", "A_GRAU" }, ;
{ "CPSDANT", "A_SDANT" }, ;
{ "CPUPDATE", "ALTERADA" }, ;
{ "CPCTAREF", "PLCTASRF" }, ;
{ "CPINFINC", "A_INFINC" }, ;
{ "CPINFALT", "A_INFALT" } }
IF Empty( &( "jpctplano->" + aCampo[ 1 ] ) )
REPLACE &( "jpctplano->" + aCampo[ 1 ] ) WITH &( "jpctplano->" + aCampo[ 2 ] )
ENDIF
NEXT
FOR EACH aCampo IN { ;
{ "CPREDUZ", "A_REDUZ" }, ;
{ "CPCCUSTO", "A_CCUSTO" }, ;
{ "CPCTAADM", "A_CTAADM" } }
IF Empty( &( "jpctplano->" + aCampo[ 1 ] ) )
REPLACE &( "jpctplano->" + aCampo[ 1 ] ) WITH Val( &( "jpctplano->" + aCampo[ 2 ] ) )
ENDIF
NEXT
SKIP
ENDDO
CLOSE DATABASES
Só fiquei na dúvida sobre a macro.
Poderia ter usado FieldPut( FieldNum( aCampo[ 1 ] ), FieldGet( FieldNum( aCampo[ 2 ] ) ) ).
Acho que é conhecido de todos.
FieldPut() é pra gravar, precisa do número do campo
FieldGet() é pra ler, precisa do número do campo
FieldNum() é o número do campo, para a string fornecida.
Neste caso, alguns campos continuam do mesmo tipo, mas outros mudaram de caractere para numérico.