alterar DBF

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Qualquer bom programa que se preste a manutenção de arquivos DBF permite modificar a estrutura de tabelas, o que faz com que seu header seja de fato alterado, já que é nele que se encontra a "geometria" dos registros.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Netavin
Usuário Nível 3
Usuário Nível 3
Mensagens: 306
Registrado em: 28 Fev 2007 08:37
Localização: Cacoal-RO

Mensagem por Netavin »

Boa noite meus amigos!
Antes que meus olhos se fecham por hoje, gostaria de mais uma aula sobre alteração de DBF.
Tenho um sistema rodando na empresa de um amigo. Ele pediu uma alteração no programa e isto implicou em acrescentar mais um campo no banco de dados. Fiz a alteração aqui em casa e ficou beleza. Mas esse amigo tem vários regitros cadastrados a esta altura da competição.
Como proceder para copiar os registros do DBF dele para este que alterei ?
Pretendo mandar as alterações via e-mail. Ele descompactará e sobregravará o ".exe" existente na pasta respectiva. O mesmo não poderá ser feito com o DBF.

zzzzzzzzz ...
Obrigado!!

Netavin
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinho

Crie um indice condicional e critique via WHILE ou FOR para incluir somente os registros que satisfaçam sua vontade e não se preocupe em copiar dados antigos para outro arquivo, pois tera de fazer isto sempre.

Em meu sistema, uso .CDX e tenho uma variavel que controla uma janela de tempo para visualizaçao de dados.

Esta variavel guarda uma determinada data que pode estar entre HOJE e os ultimos 15 dias, HOJE e os ultimos 30 dias, HOJE e os ultimos 3 meses ou HOJE e os ultimos 6 meses ou o periodo que eu quizer.

Nas filtragens, uso SetScope passando para o mesmo a data de hoje e a data desta variavel, desta forma só visualizo o montante de registros dentro desta janela.

Pelo fato do SetScope trabalhar baseado em um indice por data fica rapida a filtragem e não preciso usar indices condicionais, mas no seu caso não sei o que voce usa para filtrar, então passe a fazer uso deles nas filtragens e relatorios.
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.
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

[Rochinha]
Acho que o mestre Rochinha estava sonambulo. (eh! eh! eh!)
Não consegui "ligar" a pergunta a resposta dada.

[Netavin]

Este exemplo muda a estrutura do dbf e acrescenta um campo no arquivo.

Código: Selecionar todos

use cadcli

a_stru := cadcli->(dbstruct())
posi := ascan(a_stru, {|x| x[1] = 'ENDERECO'})
a_stru[posi, 3] := 50

if ascan(a_stru, {|x| x[1] = 'EMAIL2'}) = 0
   aadd(a_stru, {'EMAIL2', 'C', 40, 0})
end

cadcli->(dbclosearea())
if frename('cadcli.dbf', 'cadcli2.dbf') = 0
   dbcreate('cadcli', a_stru)
   use cadcli exclusive new
   append from cadcli2
   use
   ferase('cadcli2.dbf')
end
Espero ter ajudado. Boa sorte.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Avatar do usuário
Netavin
Usuário Nível 3
Usuário Nível 3
Mensagens: 306
Registrado em: 28 Fev 2007 08:37
Localização: Cacoal-RO

Mensagem por Netavin »

... ehehe
gvc, juro que de cedo até agora a tardinha eu estava lendo e relendo o post do nosso amigo rochinha. Pergunta se entendi!!
Mas como ele é sempre muito técnico, eu estava tentando "decifrar" a receita.
Agora com o seu exemplo, tudo ficou claro e transparente.

Valeu rochinha!!. Quando eu crescer quero ser igual a você!
Um abraço!

Obrigado gvc!
Forte abraço!

Netavin
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
Avatar do usuário
Netavin
Usuário Nível 3
Usuário Nível 3
Mensagens: 306
Registrado em: 28 Fev 2007 08:37
Localização: Cacoal-RO

Mensagem por Netavin »

Ok !! ficou "do tipo" a rotina. Cumpriu certinho seu papel.
... supondo que no futuro eu precise acrescentar mais um campo, o procedimento será o mesmo, com as devidas substituições, certo ?

Obrigado!!



:{

Netavin
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Mensagem por rochinha »

Amiguinhos

É mesmo, passei batido e vai saber agora onde eu deveria ter postado!,

hahaha! num tem graça.
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.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Mensagem por Toledo »

Rochinha, favor verificar suas MPs... te enviei uma e acho que você ainda não leu.

Obs.: depois, pode excluir esta mensagem, ok?

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

[Netavin]
Sim. Vc pode mudar a estrutura que esta na matriz e adicionar vários campo de uma vez. Pode mudar a estrutura para excluir campos.
O que vc deverá tomar muito cuidado é quando for mudar tipos. Ex. O campo é numérico e vc vai transformar para caracter ou vice-versa. Vc não pode converter diretamente como esta no exemplo.

[Rochinha]
"Pegar no seu pé" é algo que alguns aqui do forum gostam. Não por falar que o cara tb erra, mas por mostrar que sempre lemos suas respostas e prestamos atenção. Se algo não encaixa, temos que avisar. Com bom humor de preferência. Sem desrespeito por ambos os lados.

[Toledo]
Agora que eu reparei que o cara mudou de cidade. Ainda vou marcar um F2F com o mestre desde forum.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Avatar do usuário
mhackervix
Usuário Nível 3
Usuário Nível 3
Mensagens: 105
Registrado em: 11 Fev 2008 02:06
Localização: ES

Mensagem por mhackervix »

Netavin escreveu:Boa noite meus amigos!
Antes que meus olhos se fecham por hoje, gostaria de mais uma aula sobre alteração de DBF.
Tenho um sistema rodando na empresa de um amigo. Ele pediu uma alteração no programa e isto implicou em acrescentar mais um campo no banco de dados. Fiz a alteração aqui em casa e ficou beleza. Mas esse amigo tem vários regitros cadastrados a esta altura da competição.
Como proceder para copiar os registros do DBF dele para este que alterei ?
Pretendo mandar as alterações via e-mail. Ele descompactará e sobregravará o ".exe" existente na pasta respectiva. O mesmo não poderá ser feito com o DBF.

zzzzzzzzz ...
Obrigado!!

Netavin
Sendo uma alteração de Estrutura eventual, acredito que o mais indicado seja usar o próprio DBU, ou seja, através dele copie o arquivo antigo, modifique a estrutura no novo e, caso os dados se percam, use a opção APPEND dele. Não se gasta nem meia hora.

att.
Mhackervix, Msc.
Responder