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
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)
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)
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.
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.