Página 1 de 1

COMANDO PACK

Enviado: 24 Ago 2005 17:08
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

Enviado: 24 Ago 2005 17:41
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

Enviado: 24 Ago 2005 22:25
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?

Enviado: 25 Ago 2005 00:17
por Clipper
Prezado colega

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

Até logo.

Marcelo

Enviado: 25 Ago 2005 08:33
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.

Enviado: 25 Ago 2005 08:38
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.