Página 1 de 1
Como acrescentar um campo na estrutura de um DBF já existent
Enviado: 07 Out 2004 08:23
por indusoft
Olá,
Gostaria de saber como acrescentar um CAMPO na estrutura de um DBF
atraves do Programa (sem ser pelo DBU), sendo este arquivo contem
registros.
Grato
InduSoft
Enviado: 07 Out 2004 09:17
por Everton
Eu faço isto em meu sistema, desta forma.
renomeio o dbf para .old
recrio o dbf com o campo novo
copio os dados do .old para o dbf
e recrio os indices todos.
Enviado: 07 Out 2004 09:50
por kristo
Ué, acho o DBU a forma mais fácil, sendo que ele não faz com que você perca seus dados já contidos na DBF
DBU + F3 = database = você cria o novo campo
depois DBU + F4 = struct = para você salvar a estrutura.......eu acho simples.
Abraços..
Enviado: 07 Out 2004 10:04
por janio
Isso mesmo Kristo!
Acho este processo muito mais SIMPLES, FÁCIO e RÁPIDO do que a forma que o Everton citou.
Concordo, pelo DBU é mais rápido.
Janio
Atualizar BD
Enviado: 07 Out 2004 10:25
por matrix
Eu faço desta forma, é um forma que o cliente poderá fazer também no caso de vc mandar a atualização pela net.
Código: Selecionar todos
/////////////////////////////////////////////////////////////////////////////
/////////////// Funcao: Gera e Atualida DBF da Empresa ///////
/////////////////////////////////////////////////////////////////////////////
**--------------**
PROCEDURE CR_CFG()
**--------------**
run mkdir \windows\etc
Public Muda
Clear
Set Color To W/B
While .T.
Muda=.f.
If !File("\windows\exccfg.DBF")
Create \windows\ARQ.TMP
Criacampo("CODIGO_CFG","N",5,0) // 1
Criacampo("RAZAOS_CFG","C",45,0) // 2
Criacampo("EMPRES_CFG","C",45,0) // 3
Criacampo("ENDERE_CFG","C",35,0) // 4
Criacampo("NUMERO_CFG","N",5,0) // 5
Commit
Create \windows\exccfg From \windows\Arq.TMP
Erase \windows\Arq.TMP
If File("\windows\exccfg.TMP")
Use \windows\exccfg
Append From \windows\exccfg.tmp
Close Data
Erase \windows\exccfg.tmp
Endif
Else
Use \windows\exccfg
If Neterr()
Alert(" Arquivo esta Ativo em outro Terminal! ")
Set Color to
Clear
Return .F.
Else
@ 21,06 Say Space(50)
@ 21,06 Say DBF()
@ 21,15 Say "- ##### Verificando Campos ##### "
Existestru(01,"CODIGO_CFG")
Existestru(02,"RAZAOS_CFG")
Existestru(03,"EMPRES_CFG")
Existestru(04,"ENDERE_CFG")
Existestru(05,"NUMERO_CFG")
If Muda
Use \windows\exccfg
Close Data
FErase("\windows\emp*.NTX")
!Ren \windows\exccfg.DBF exccfg.TMP
Loop
Endif
Endif
Endif
Inkey(1)
Exit
Enddo
Close All
Return
* Inclua os campos que quiser e depois mande executar esta função, num determinado local do sistema.
Abraços.
Enviado: 07 Out 2004 11:26
por Clipper
Existema várias formas, mas quando você tem que mandar uma atualização para um cliente via internet o melhor meio é como o Dudu faz, eu faço algo parecido...Vejam :
Código: Selecionar todos
IF FILE("\BR\DAT\ARQFECHA.ATU")
USE \BR\DAT\ARQFECHA.ATU
APPEND FROM \BR\DAT\ARQFECHA.DBF
USE
FERASE("\BR\DAT\ARQFECHA.DBF")
FERASE("\BR\DAT\ARQFECHA.CDX")
FRENAME("\BR\DAT\ARQFECHA.ATU","\BR\DAT\ARQFECHA.DBF")
ATU=.T.
ENDIF
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* ATUALIZACAO ARQFECHA
IF FILE("\BR\DAT\BRMASTER.ATU")
USE \BR\DAT\BRMASTER.ATU
APPEND FROM \BR\DAT\BRMASTER.DBF
USE
FERASE("\BR\DAT\BRMASTER.DBF")
FERASE("\BR\DAT\BRMASTER.CDX")
FRENAME("\BR\DAT\BRMASTER.ATU","\BR\DAT\BRMASTER.DBF")
ATU=.T.
ENDIF
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* ATUALIZACAO CADITE
IF FILE("\BR\DAT\CADITE.ATU")
USE \BR\DAT\CADITE.ATU
APPEND FROM \BR\DAT\CADITE.DBF
USE
FERASE("\BR\DAT\CADITE.DBF")
FRENAME("\BR\DAT\CADITE.ATU","\BR\DAT\CADITE.DBF")
ATU=.T.
ENDIF
Eu mando para o cliente um instalador com os arquivos .ATU (são os arquivos com a estrutura atualizada), o sistema na inicialização verifica a existência destes arquivos, se existir ele copia os dados do arquivo antigo para o novo, exclui o arquivo antigo e renomeia o novo de .ATU para .DBF
A variável ATU=.T. é para que eu informe ao sistema que foi feita uma atualização e que ele deve reindexar os arquivos.
Até logo.
Marcelo
Enviado: 08 Out 2004 12:45
por Dercide
Eu tenho clientes em varios estados do Brasil, e passava por essa dificuldade, pois cada vez que inclui campos nos DBF, tinha aquele trabalho todo, no inicio eu manda os discos, e era executado um programa de instalação/atualização, no disco tinha todas as bases vazias, ai o sistema ia lendo as vazias(novas), e comparando com as do cliente, se faltasse um campo, ai era feito a atualizaçao. Eu copiava a base vazia do disquete para o disco rigido, fazia um APPEND FROM, apagava a velha e renomeava a nova.
Funcionava uma beleza, so que depois eu fiz de outra maneira.
Criei um programa para ler todas as minhas base de dados, visto que eu utilizava varios diretorios diferentes com os DBFs, apartir dai gero um .PRG, com todas as estrutura relacionadas. Compilo e gero um executavel, que é mandado para o cliente, ele checa todas as bases e atualiza.
Já tinha postado isso uma vez no forum antigo, mandei para varios colegas, até modifiquei a pedidos. Eu ainda tenho esse exemplo, se alguem quiser é só dar um alo.
Abraços,
Dercide.
dercide@terra.com.br
Enviado: 08 Out 2004 12:46
por Dercide
Eu tenho clientes em varios estados do Brasil, e passava por essa dificuldade, pois cada vez que inclui campos nos DBF, tinha aquele trabalho todo, no inicio eu manda os discos, e era executado um programa de instalação/atualização, no disco tinha todas as bases vazias, ai o sistema ia lendo as vazias(novas), e comparando com as do cliente, se faltasse um campo, ai era feito a atualizaçao. Eu copiava a base vazia do disquete para o disco rigido, fazia um APPEND FROM, apagava a velha e renomeava a nova.
Funcionava uma beleza, so que depois eu fiz de outra maneira.
Criei um programa para ler todas as minhas base de dados, visto que eu utilizava varios diretorios diferentes com os DBFs, apartir dai gero um .PRG, com todas as estrutura relacionadas. Compilo e gero um executavel, que é mandado para o cliente, ele checa todas as bases e atualiza.
Já tinha postado isso uma vez no forum antigo, mandei para varios colegas, até modifiquei a pedidos. Eu ainda tenho esse exemplo, se alguem quiser é só dar um alo.
Abraços,
Dercide.
dercide@terra.com.br
Enviado: 10 Out 2004 01:56
por Dudu_XBase
Dercide envie ele ao Toledo para colocar no link downloads do site para ficar disponível a todos. (Y)
Enviado: 15 Out 2004 15:23
por Cleiton Fidelis
Eu faco o Seguinte...
Ja que tenho de alterar a estrutura faco assim, envio o arquivo ja alterado com extensao .tmp
Exemplo para Cliente.tmp // envio o arquivo ja com os novos campos
use cliente.tmp
zap
append from cliente.dbf
copy to cliente.dbf
reindexo os indices.
Cleiton Fidelis