Página 1 de 1
Excluir registros e organizar arquivos
Enviado: 04 Ago 2010 14:17
por Josmar dos Santos
Ola pessoal, to quase la, ja consegui converter arquivos DBT para FPT e também com a ajuda dos colegas migrar ntx para cdx. So falta uma coisa agora: preciso de uma rotina q exclui registros q desejo do arquivo e organize o mesmo. Ja consigo marcar ele com o delete...preciso agora utilizar creio eu o pack !
sem mais obrigado
josmar
Re: Excluir registros e organizar arquivos
Enviado: 04 Ago 2010 14:29
por alxsts
Olá!
Você já deu uma das possíveis respostas, o comando Pack, embora esse comando não seja recomendado por muitos.
O ideal mesmo seria criar um arquivo novo com a mesma estrutura e gravar os registros não deletados. Feito isto, é só recriar os índices.
Re: Excluir registros e organizar arquivos
Enviado: 04 Ago 2010 15:26
por Josmar dos Santos
Ola alxsts, mas te pergunto: como se faz isso ?? daria para fazer dar um exemplo ?
Josmar
Re: Excluir registros e organizar arquivos
Enviado: 04 Ago 2010 15:31
por sambomb
para dar o "pack" basta abrir o arquivo em modo exclusivo
o nome do comando é pack
Exemplo
//--Abre em modo exclusivo
OpenDBF("PRODUTO",.T.)
Select PRODUTO
Pack
DbCloseAll()
Re: Excluir registros e organizar arquivos
Enviado: 04 Ago 2010 16:46
por Pablo César
Exemplo:
SET DELETE ON // quando apenas é deletado o registro este comando, não processa, não aparece
SELE 1 // seleciona area
USE CLIENTES // abre o banco de dados de forma exclusiva
GOTO 4 // Posicionar no registro desejado para ser deletado. Neste caso no registro 4 como exemplo
DELETE // marca o registro para ser eliminado. Marcado como "deleted"
PACK // remove fisicamente o registro que foi marcado como "deleted"
O sistema em rede, fazer o PACK não é aconselhado como os colegas ja falaram. Pois exige que todo mundo saia do sistema para ser removido fisicamente (ja pensou nisso ?).Mas você pode marca-los como "deleted" e até mesmo reutilizá-los. Por exemplo num TBROWSE os registros deletados somem quando pressionado a tecla delete, mas o SET DELETE tem que estar ON. Ja para reutilizar um registro deletado, você primeiro deleta, depois ao invés de utilizar o APPEND BLANK para adicionar registro em branco no final, você apenas ressucita o registro deletado com o comando RECALL e depois faz o REPLACEs normalmente. Não sei se confundí mais a idéia de remoção de registro ou de aproveitamento...
Obs.: Mensagem reditada para corrigir o RECALL que antes estava trocado por outro comando errado.
Re: Excluir registros e organizar arquivos
Enviado: 04 Ago 2010 17:30
por alxsts
Olá!
UInPack? Esse é novo para mim. Conheço Recall ou __dbRecall().
Re: Excluir registros e organizar arquivos
Enviado: 04 Ago 2010 22:50
por alxsts
Olá!
Existe um material muito bom sobre o assunto (creio que muitos já o conhecem), neste
link . Nesta página, existe um outro link (
Record Recycling) que dá uma aula sobre a técnica de reciclagem de registros.
Como é uma raridade, seria interessante salvar o material antes que desapareça...
(link 1 =
http://www.ghservices.com/gregh/clipper/trix0006.htm)
(link 2 =
http://www.ghservices.com/gregh/clipper/trix0007.htm)
Re: Excluir registros e organizar arquivos
Enviado: 05 Ago 2010 01:14
por Josmar dos Santos
Ok garotos, vou recolher todo esse material eu vou fazer um estudo sobre esse assunto....
Por enquanto, obrigado
josmar
Excluir registros e organizar arquivos
Enviado: 05 Ago 2010 09:08
por Pablo César
UInPack? Esse é novo para mim. Conheço Recall ou __dbRecall().
KAKAKA... falha minha... hihihi desculpem acho que foi força dohabito ficar inventando comandos... rsss acho que foi efeito do grande resfriado que peguei... na verdade quis dizer recall como o colega disse. Desculpe, ja consertei o meu erro.
Legal o material encontrado, Alexandre. Era sobre isso que eu me referia e nessas páginas explicam bem o dois casos que você disponibilizou em forma de PDF, valeu para posterior consulta.
Re: Excluir registros e organizar arquivos
Enviado: 05 Ago 2010 10:09
por alxsts
Olá!
Buenas Pablo, não "esquente a cuca"... Viu que eu errei também? __dbRecall() não existe. É DbRecall(). E eu nem estava gripado...
Toledo, grande intervenção. Não salvei por falta de tempo no momento mas alertei do perigo de sumir... Realmente o material é muito bom.
Re: Excluir registros e organizar arquivos
Enviado: 05 Ago 2010 10:18
por Maligno
Deixo minha experiência. Talvez sirva para alguém. Sempre que apago, limpo todos os campos (função própria para isso) e marco o desalmado como apagado. No meu sistema de trabalho, sempre tenho a última chave de índice preparada para levar ao topo os registros marcados como apagados. Assim, ao reciclar, aponto para a última chave do índice e se estiver no topo um dos "excluídos", reaproveito, apenas removendo a marca. Equivale a um append blank. Só que mais simples, prático e rápido. Agora, pack, jamais. Com o uso de funções apropriadas, tanto o apagamento quanto a reciclagem ocorrem de forma transparente. Inclusive, pode-se até modificar os comandos delete e append blank do STD.CH para fazer todo o processo de forma invisível. E sem modificar linha alguma do fonte original.
Re: Excluir registros e organizar arquivos
Enviado: 05 Ago 2010 11:02
por rochinha
Amiguinhos,
Eu raramente ou nunca uso o PACK, inclusive os unicos lugares que encontrei o comando foram em rotinas não usadas.
A idéia da deleção e limpeza dos campos para reutilização posterior no meu caso não serviria no primeiro momento, pois o registro deletado pode ter sido efetivado de forma erronea.
Analisando as postagens aqui e as informações na Holmes Page vejo que para mim, ao invés de modificar os comandos e funções de deleção eu modificaria o comando ou função PACK.
Pois somente neste momento eu estaria realmente eliminando ou descartando os registros usando a técnica de limpeza dos registros.
Excluir registros e organizar arquivos
Enviado: 05 Ago 2010 16:10
por Pablo César
Eu não descartaria a utilização do PACK como uma opção do sistema, pois em eventuais casos de manutenção do BD o seu uso eu recomendo, claro que com toda prevenção possível (só administradores, dar um aviso que registros não poderão ser recuperados, que todo mundo esteja fora do sistema) enfim manutenção as vezes é necessário fazer. No meu sistema, quando algo acontece, como por exemplo abortou o sistema, sequência perdida, corrompeu indices: o bd passa por umas rotinas de verificação e limpeza e indexação no caso.