Adicionar um campo em um arquivo dbf via sw.
Enviado: 02 Mar 2011 11:26
Tenho um arquivo dbf e quero adicionar um campo novo no arquivo.
Alguem pode me auxiliar
Locio
Alguem pode me auxiliar
Locio
Em homenagem a Paulo Cesar Toledo
https://pctoledo.org/
Código: Selecionar todos
Function Main()
LOCAL aStru
Use OldDbf Exclusive New
aStru := OldDbf->( DbStruct() )
AAdd( aStru, { "NovoCampo", "C", 10, 0 } )
DbCreate( "NewDbf", aStru )
OldDbf->( DbCloseArea() )
Use NewDbf Exclusive new
Append from OldDbf
NewDbf->( DbCloseArea() )
Return NILCódigo: Selecionar todos
Function Main()
LOCAL aStru
Use OldDbf Exclusive New
aStru := OldDbf->( DbStruct() )
// ADICIONANDO CAMPO
IF AScan( aStru,{|a| UPPER(a[1]) == "NOVOCAMPO" } ) = 0 // se não achar ele acresenta
AAdd( aStru, { "NOVOCAMPO", "C", 10, 0 } )
ENDIF
// ALTERANDO CAMPO EXISTENTE
nPOS:= AScan( aStru,{|a| UPPER(a[1]) == "NOMECAMPO" } )
IF nPOS > O
aStru[nPOS,3] := 20 // AUMENTOU O TAMANHO
ENDIF
DbCreate( "NewDbf", aStru )
OldDbf->( DbCloseArea() )
Use NewDbf Exclusive new
Append from OldDbf
NewDbf->( DbCloseArea() )
Return NILCódigo: Selecionar todos
#ifndef _DBSTRUCT_CH
#define _DBSTRUCT_CH
/* Positions for field structure array */
#define DBS_NAME 1
#define DBS_TYPE 2
#define DBS_LEN 3
#define DBS_DEC 4
/* Length of the field structure array */
#define DBS_ALEN 4
#endif /* _DBSTRUCT_CH */Código: Selecionar todos
#include "dbstruct.ch"
Function Main()
LOCAL aStru
Use OldDbf Exclusive New
aStru := OldDbf->( DbStruct() )
// ADICIONANDO CAMPO
IF AScan( aStru,{|a| UPPER(a[DBS_NAME]) == "NOVOCAMPO" } ) = 0 // se não achar ele acresenta
AAdd( aStru, { "NOVOCAMPO", "C", 10, 0 } )
ENDIF
// ALTERANDO CAMPO EXISTENTE
nPOS:= AScan( aStru,{|a| UPPER(a[DBS_NAME]) == "NOMECAMPO" } )
IF nPOS > O
aStru[nPOS,DBS_LEN] := 20 // AUMENTOU O TAMANHO
ENDIF
DbCreate( "NewDbf", aStru )
OldDbf->( DbCloseArea() )
Use NewDbf Exclusive new
Append from OldDbf
NewDbf->( DbCloseArea() )
Return NIL