Como saber se existe um campo no DBF ?

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Como saber se existe um campo no DBF ?

Mensagem 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 !!
lugab
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como saber se existe um campo no DBF ?

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Como saber se existe um campo no DBF ?

Mensagem por lugab »

Obrigado mais uma vez, mestre Quintas

Um òtimo fim de semana !!!!
lugab
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Como saber se existe um campo no DBF ?

Mensagem 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 ...
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Como saber se existe um campo no DBF ?

Mensagem por lugab »

Valeu, Rochinha...

Obrigado
lugab
Responder