Página 1 de 1

Como saber se existe um campo no DBF ?

Enviado: 23 Jun 2018 10:10
por lugab
Bom dia,

Preciso copiar dados de um arquivo para o outro e as vezes existe um campo no arquivo origem, mas não existe o mesmo campo no arquivo destino
e isso causa cancelamento do programa.
Preciso prever e evitar esse fato na rotina abaixo, alguém me ajuda ?

Código: Selecionar todos

sele Origem
nCampos:=DbStruct()
sele Destino
dbappend()
neterro()
For i:=1 to Len(nCampos)
       cCampo:=nCampos[i,1]
       Repl Destino->&(cCampo) with Origem->&(cCampo)
Next i
Obrigado e boa copa !!

Como saber se existe um campo no DBF ?

Enviado: 23 Jun 2018 11:29
por JoséQuintas
FieldNum()

Código: Selecionar todos

#include "dbstruct.ch"

aStru := dbStruct()
FOR nCont = 1 TO Len( aStru )
   cFieldName := aStru[ nCont, F_NAME ]
   nFieldNum := alias2->( FieldNum( cFieldName ) )
   IF nFieldNum != 0
      xValue := FieldGet( nCont )
      alias2->( FieldPut(  nFieldNum, xValue ) )
    ENDIF
NEXT

Nota: sem macro vai ser mais rápido.

Como saber se existe um campo no DBF ?

Enviado: 23 Jun 2018 11:55
por lugab
Obrigado mais uma vez, mestre Quintas

Um òtimo fim de semana !!!!

Como saber se existe um campo no DBF ?

Enviado: 25 Jun 2018 10:27
por rochinha
Amiguinhos,

Use a função IsField():

Código: Selecionar todos

Function IsField( cField ) 
  Return( fieldpos( cField ) != 0 ) 

Código: Selecionar todos

   ...
   replace campo1 ...
   replace campo2 ...
   replace campo3 ...
   if IsField( "campo4" )
      replace campo4 ...

Como saber se existe um campo no DBF ?

Enviado: 25 Jun 2018 14:01
por lugab
Valeu, Rochinha...

Obrigado