Página 2 de 2

Limpar arquivo DBT

Enviado: 15 Dez 2011 10:40
por lucimauro
Voce tambem poderia usar outra alternativa que seria gravar seu texto em DBF mesmo exemplo :

cria um arquivo por exemplos
CODI N,5 && CODIGO CLIENTE
TEXTO,C,60 && Campo ainde seria gravado a linha do texto

quando voce for digitar a OBS do cliente voce ler esse TEXTO para um memo linha por linha,edita depois grava de novo o DBT temporario no arquivo DBF.


Ficaria assim
codi=1
texto="teste do sistem"
codi=1
texto="continuaão."



Nao sei se foi claro, e tambem so dei mais uma alternativa.

Limpar arquivo DBT

Enviado: 15 Dez 2011 10:53
por Pablo César
lucimauro escreveu:tambem poderia usar outra alternativa que seria gravar seu texto em DBF
Nossa essa dica não achei legal, não. Guardar textos/observações em dbf... ummm na MMO essa não é uma boa prática de programar. Todos os registros mesmo que em branco (vazios) no DBF irão ocupar espaço. Daí eu partiria pelos arquivo TXTs.

Alexandre, qual seria a diferença entre ZAPear ou re-criar o DBF ? Ambos, você terá que abrir em modo EXCLUSIVO ou melhor dito, terá que todo mundo deixar de compartilhar o DBF que você deseja zerar. Não é ? Então, sendo assim crie o DBF com a mesma estrutura e pronto... não é ? Assim como o colega Euclides indicou.

Ou você está dizendo (desde a sua primeira mensagem) que precisa zapear. O que você estaria querendo dizer é apenas limpar o DBT ou FTP do registros que foram deletados no DBF, mas não quer ZAPear o BD propriamente dito ? Se for isso, então concordo com o Itamar, copiar com "Set Deleted On" seria o mais seguro e o mais rápido levando em conta que irá varrer o arquivo inteiro. De todas as formas qualquer dessas práticas de manutenção, iriam demandar EXCLUSIVIDADE do uso desse arquivo. Mais uma vez, fico convencido que abolindo os campos MEMOs seria a melhor opção e a sua implementação não será tão grande assim. Eu faria !
Itamar escreveu:Pelo exemplo que ele colocou eu não vi isso não.
Se é o exemplo do Euclides que você se refere, discordo pois não está apagando apenas re-criando. Quase o mesmo efeito mas diferente ação.
Itamar escreveu:Outra coisa é que o Harbour não herda alguns bugs do clipper não.
Você ja passou por essa experiência ? Se o colega já disse que ao eliminar no dbf os registros no memo ainda ficam... então algo deve ter herdado...
Itamar escreveu:A forma mais segura sempre será copiar o DBF para outro com "set deleted on"
Concordo plenamente. E ainda creio (não lembro, mas acho que ja aconteceu comigo) que mesmo no caso de arquivo corrompido, ao utilizar o COPY TO este, copia sem tais registros quebrados.

Limpar arquivo DBT

Enviado: 15 Dez 2011 11:58
por asimoes
Pessoal,

Quando houver algum problema no zap (que deixe lixo no dbt ou fpt) fazer copia da estrutura e renomear é uma opção.
Conforme dica já postada aqui.
[]´s

Limpar arquivo DBT

Enviado: 15 Dez 2011 13:44
por Itamar M. Lins Jr.
Oi.
iriam demandar EXCLUSIVIDADE do uso desse arquivo.
Não no caso do "set deleted on"

Código: Selecionar todos

set exclusive off
set deleted on
use velho.dbf new shared alias "db1"
use novo.dbf new shared alias "db2"
DbSelectArea("db1")

Do while !eof()
  
  db2->(DbAppend())
  db2->field... := db2->field...

 DbSkip()

EndDo
Nâo precisa de exclusividade para isso.

Saudações,
Itamar M. Lins Jr.

Limpar arquivo DBT

Enviado: 15 Dez 2011 14:05
por Pablo César
Tem razão Itamar, não precisa exclusividade como COPY TO TEMP.DBF. Mas com certeza irá precisar todo mundo sair na hora de renomear para o nome do arquivo original.