COMANDO PACK

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Rubens Tulio
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 24 Ago 2005 16:54

COMANDO PACK

Mensagem por Rubens Tulio »

caro colegas

tenho um arquivo sendo usado em rede, no qual e o arquivo de vendas, onde os vendedores gravam os produtos vendidos, e depois o caixa usa esse arquivo ao mesmo tempo, sendo que quando confirmado a venda do produto ele é deletado, mas com o tempo tem um monte de dados no arquivo de vendas, e preciso ir la pessoalmente dar um pack, antes preciso tirar todos os terminais do sistema de venda e depois dar o pack, nao tem um comando ou uma rotina que o caixa assim que confirma o produto o proprio sistema de um PACK e faz a limpeza automaticamente

Agradeco a atencao pessoal
:-o
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Prezado Colega

Usar o comando PACK com o arquivo compartilhado com certeza não tem como, depedendo do que você realmente deseja existem muitas soluções, vejamos algumas :

Efetuar o PACK no inicio ou no final do dia quando apenas o servidor estiver on, isso pode ser feito mais facilmente no inicio do dia, você bota uma rotina na inicialização do servidor travando o arquivo e efetuando o PACK, desta forma as estações só poderão ficar ON quando a rotina tiver sido executada.
A mesma regra pode ser usada ao final do dia antes do desligamento do servidor, cria-se uma rotina para desligamento, quando se clicar no icone ele executa o PACK e desliga o compuatador.

Outra opção seria rever a forma de uso do seu arquivo, talvez criando arquivos temporários.

Existem inumeras possibilidades, usando um pouco a imaginação creio que você conseguirá uma boa solução, e precisando pode contar com os colegas aqui do fórum.

Até logo.

:xau

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Stanis Luksys
Colaborador
Colaborador
Mensagens: 1329
Registrado em: 18 Jun 2005 03:04
Localização: São Paulo
Contato:

Mensagem por Stanis Luksys »

Olá,

Vou aproveitar para tirar uma dúvida simples mas cruel:

Como eliminar um registro definivamente do arquivo?

Pergunto isso por que se eu der um Pack todos os registros marcados para deleção serão eliminados, e eu quero eliminar somente o atual.

É possível?
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Prezado colega

Não dá para fazer isso, pelo menos que eu saiba.

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

Para reutilizar o registro sem ter que "PACKear" o arquivo, vc pode marcar o registro como apagado, colocar um determinado valor nos campos que fazem a chave de pesquisa. Assim antes de criar um registro (append), vc faz a pesquisa por essa chave especial, lembrando que o registro esta apagado, então vc deve colocar set deleted off antes e on depois. Recupere o registro e atualize os valores com os dados que vc quer gravar.
Demora um pouco mais, mas vc vai aproveitar melhor o espaço em disco.

Quanto ao PACK, o Clipper não permite fazê-lo sem que o arquivo esteja bloqueado. Tenho minhas dúvidas até se é possível apenas bloqueando o arquivo que foi aberto compartilhado. Nunca testei. Sempre abro o arquivo exclusivo para executar o comando.

Vc pode tb preparar o sistema para abrir um arquivo temporário para cada dia. Durante o dia apenas esse arquivo é utilizado. No dia seguinte é criado um novo arquivo. Assim um sistema que abre apenas em uma máquina, o Caixa por exemplo, verifica e exclui os temporários que já tem uma "data" antiga.
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

Stanis Luksys:

Não existe forma de fazer o que vc quer diretamente.

Marque o registro como apagado e grave o registro em branco. Isso vai eliminar os dados do arquivo.

Em último caso, copie o arquivo para um temporário com a condição de não copiar esse(s) registros que vc não quer. Acho isso uma "violência", mas é uma opção.
Responder