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

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.