Excluir registros e organizar arquivos

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Josmar dos Santos
Usuário Nível 3
Usuário Nível 3
Mensagens: 277
Registrado em: 11 Jan 2006 18:36
Localização: Botucatu-SP

Excluir registros e organizar arquivos

Mensagem 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
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Excluir registros e organizar arquivos

Mensagem 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.
[]´s
Alexandre Santos (AlxSts)
Josmar dos Santos
Usuário Nível 3
Usuário Nível 3
Mensagens: 277
Registrado em: 11 Jan 2006 18:36
Localização: Botucatu-SP

Re: Excluir registros e organizar arquivos

Mensagem por Josmar dos Santos »

Ola alxsts, mas te pergunto: como se faz isso ?? daria para fazer dar um exemplo ?

Josmar
sambomb
Usuário Nível 3
Usuário Nível 3
Mensagens: 250
Registrado em: 24 Out 2008 17:02
Localização: Itaocara - RJ - Brasil

Re: Excluir registros e organizar arquivos

Mensagem 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()
Imagem

Rca Sistemas - Itaocara - RJ
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Re: Excluir registros e organizar arquivos

Mensagem 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.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Excluir registros e organizar arquivos

Mensagem por alxsts »

Olá!

UInPack? Esse é novo para mim. Conheço Recall ou __dbRecall().
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Excluir registros e organizar arquivos

Mensagem 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)
Anexos
The_Holmes_Page.zip
Página original e traduzido dos links indicados pelo Alexandre
(443.5 KiB) Baixado 171 vezes
Editado pela última vez por Toledo em 05 Ago 2010 08:33, em um total de 1 vez.
Razão: Esta mensagem foi editada para anexar os arquivos que estão nos links indicados pelo Alexandre. Assim este material estará a salvo!
[]´s
Alexandre Santos (AlxSts)
Josmar dos Santos
Usuário Nível 3
Usuário Nível 3
Mensagens: 277
Registrado em: 11 Jan 2006 18:36
Localização: Botucatu-SP

Re: Excluir registros e organizar arquivos

Mensagem por Josmar dos Santos »

Ok garotos, vou recolher todo esse material eu vou fazer um estudo sobre esse assunto....

Por enquanto, obrigado

josmar
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Excluir registros e organizar arquivos

Mensagem 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.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Excluir registros e organizar arquivos

Mensagem 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.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Excluir registros e organizar arquivos

Mensagem 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.
[]'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
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: Excluir registros e organizar arquivos

Mensagem 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.
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
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Excluir registros e organizar arquivos

Mensagem 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.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Responder