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: 20453
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 4671
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Curtiu: 3 vezes
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? Infelizmente links para www.pctoledo.COM.BR irão quebrar pois o Forum se foi, assim como nosso célebre Irmão de Bits Toledo. Ainda assim me ENVIE seu email com link do tópico encontrado na Web para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url] e tentarei lembrar do que se tratava. 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