Alteração na Estrutura do DBF com registros.

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Marcos
Usuário Nível 3
Usuário Nível 3
Mensagens: 355
Registrado em: 20 Set 2003 09:16
Localização: Cáceres/Mato Grosso

Alteração na Estrutura do DBF com registros.

Mensagem por Marcos »

Saudações a todos, estou com um problema, nunca passei por esta situação, já vi vários tópicos abordando este assunto, mas só agora estou precisando, acredito que não consigo mais acessar estes referidos tópicos, bom vamos ao problema:
Tenho um DBF de Clientes, nele existem vários clientes já cadastrados, só que eu atualizei a Estrutura do DBF, mudando muita coisa (Tamanho dos campos, de Character para Numeric, inclusão de alguns campos que não existiam e etc) só que agora eu não sei como eu faço para realizar tal alteração na Estrutura do DBF sem perder os registros já cadastrados (Clientes), na primeira tentativa que fiz, já foi em vão, pois fiz todas as alterações na estrutura do DBF Clientes pedi para gravar deu um erro e saiu fora, aconteceu que perdi todos os registros que estavam cadastrados, a única coisa que deu certo foram as alterações na Estrutura do DBF (Clientes), ficaria muito grato com a ajuda de vocês.
Abraços,
Marcos
Da Roça.
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mensagem por Dudu_XBase »

...eh qdo vc muda um campo caractere para numerico no dbu da bucha...
...qdo preciso fazer fazer tal alteração... uso o foxbase...nunca tive problemas....
carrego o programa ... use arquivo .... modi stru ... ctrl+end ...salvo e tudo certo...
para pegar o foxbase...vá no site no Wagner...

http://www.vagucs.com.br/download/fox.zip


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Avatar do usuário
Marcos
Usuário Nível 3
Usuário Nível 3
Mensagens: 355
Registrado em: 20 Set 2003 09:16
Localização: Cáceres/Mato Grosso

Mensagem por Marcos »

Olá Dudu, obrigado pela atenção, eu também trabalho com foxbase, a propósito após não ter êxito com o DBU tentei com o Foxbase e deu certo, em contrapartida perdi as informações que haviam no campo que foi alterado de Character para Numeric, é possivel efetuar tais alterações sem perder os registros já existentes?
Abraços,
Marcos
Da Roça.
andersoncamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 103
Registrado em: 22 Ago 2004 11:54

Mensagem por andersoncamilo »

Marcos bom dia, quando eu tenho que fazer este tipo de alteração que você está querendo, eu faço de duas maneiras uma é criar uma rotina que copia os dados do arquivo velho para o arquivo novo, ou usando o fox base, eu crio alguns campos auxiliar no arquivo com o mesmo formato antigo e transfiro os dados antigos para estes campos, depois mudo o tipo de cacter para numérico e copio novamente para o campo já com o formato numérico usando va funcão VAL(), ou se for para campo tipo date usando a função CTOD(), e assim sucessivamente.

Um abraço e bom trabalho.

Anderson Camilo

Ji-Paraná - Rondônia :D
andersoncamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 103
Registrado em: 22 Ago 2004 11:54

Mensagem por andersoncamilo »

Obs: Quando falo copio dentro do fox uso o comando REPLACE.


Anderson Camilo

Ji-Paraná - Rondônia
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mensagem por Dudu_XBase »

....desculpe fiz a alteração de numérico pra caractere foi blz...qdo reverti...perdi os dados...a solução do Anderson é a solução nessa sua situação...


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Avatar do usuário
Marcos
Usuário Nível 3
Usuário Nível 3
Mensagens: 355
Registrado em: 20 Set 2003 09:16
Localização: Cáceres/Mato Grosso

Mensagem por Marcos »

Anderson eu entendi sua sugestão, acontece que eu não sei os comandos para fazer isso dentro do Fox. Você poderia por favor me ajudar?
Abraços e obrigado pela atenção de todos.
Marcos
gransoft
Usuário Nível 3
Usuário Nível 3
Mensagens: 321
Registrado em: 06 Jul 2004 17:48
Localização: UBERLÂNDIA-MG
Contato:

Alterar estrutura de *.dbf

Mensagem por gransoft »

ARAGUARI-MG, 27 de agosto de 2004.

Prezados Srs.,

Sugestão:

Todo Aplicativo deve criar os "*.dbf" vazios, cuja estrutura é definida no próprio programa. Assim sendo, basta renomear o arquivo antigo, executar a rotina para criar arquivo/índices com os novos campos e importar os dados do anterior...

Código: Selecionar todos

RENAME ARQEST.DBF TO ARQEST.ANT
CriaArq()
USE ARQEST
APPEND FROM ARQEST.ANT
USE
Indexa()
CLOSE DATABASES
* ERASE ARQEST.ANT  // SE TIVER CERTEZA QUE TUDO DEU CERTO ...
Se por ventura, queremos é alterar um campo para outro...

Código: Selecionar todos

RENAME ARQEST.DBF TO ARQEST.ANT
CriaArq()
USE ARQEST
APPEND FROM ARQEST.ANT
GOTO TOP
WHILE (.NOT. EOF())
*  REPLACE CAMPONOVO WITH CAMPOANT
   REPLACE CAMPONUM  WITH VAL(CAMPOSTR)
   SKIP
END
USE
Indexa()
CLOSE DATABASES
* ERASE ARQEST.ANT  // SE TIVER CERTEZA QUE TUDO DEU CERTO ...
Obviamente, se for o programador que realizará este processo, usar o FoxBase para
USE ARQEST
copy to ARQEST.ANT
zap
modi stru
append from ARQEST.ANT
replace all camponum with VAL(campostr)

é muito mais simples. DBU? Crédo!

Atenciosamente,
Janis Peters Grants.

http://www.gransoft.com.br
gransoft@zipmail.com.br
Editado pela última vez por gransoft em 30 Ago 2004 16:48, em um total de 2 vezes.
Avatar do usuário
Vander
Usuário Nível 3
Usuário Nível 3
Mensagens: 214
Registrado em: 23 Jul 2004 01:43
Localização: João Monlevade - MG

Alterar estrutura do DBF

Mensagem por Vander »

Tenho uma rotina que talves possa ajudar, entre em contato que eu envio pra você.

Vander

ndsistemas@bol.com.br
ou
vlnunes@click21.com.br
Spitzer
Usuário Nível 2
Usuário Nível 2
Mensagens: 60
Registrado em: 15 Ago 2003 04:56
Localização: Nova Fátima - PR

Mensagem por Spitzer »

Olá!

Tenho usado o DBase III para tais tarefas.
A pasta que está o DBase está no Path do autoexec.bat.
Então quando preciso, mudo qualquer proriedade do campo, excluo e incluo campos... sem problemas!
Ele mesmo já se encarrega de um backup antes de qualquer operação.
Invoco o assistente do DBase com F2 e não preciso escrever uma linha de código sequer para realizar estas alterações.
Não é nenhuma novidade nem maravilha do outro mundo, mas tem me atendido bem.

A propósito, tenho uma versão do DBase III Plus em Português.
Aí fica bem mais fácil de usar o assistente.
Quem quiser uma cópia desta versão, peça-me em private pelo e-mail ademirspitzer@yahoo.com.br que envio.
Abraços,
Ademir Spitzer
CDV
Usuário Nível 2
Usuário Nível 2
Mensagens: 91
Registrado em: 30 Ago 2004 10:27

Mensagem por CDV »

.....
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Mensagem por janio »

Olá a todos,

Também precisei fazer uma alteração em um campo mundando-o de NUMÉRICO para CARACTERE. Tentei pelo DBU, deu erro e perdi todos os registros.
Tentei pelo MYDBU e FUNCIONOU BLZ. É facílimo de usar. Ele cria uma novo DBF e copia todos os dados do antigo para o novo DBF. Depois é só renomear o arquivo. Se eu não me engano, peguei este programa no CD do Toledo.

Janio
Responder