Pedro,
Na minha opinião, vc está fazendo certo.
Para implementar este recurso, vc deve tem 3 opções... Vamos lá!
1) Usar o DELETE e eliminar o PACK mantendo todos deletados na própria tabela.
A desvantagem aqui é a queda de performance que irá acontecer conforme a quantidade de registros deletados cresce.
A vantagem é que não é necessário esforço de programação.
2) Copiar o registro para uma tabela secundária.
A desvantagem aqui é que será necessário uma tabela secundária para cada tabela principal.
A vantagem é que com pouco esforço de programação vc tem seu recurso implementado.
3) Criar uma tabela de LOG onde esses dados ficam armazenados.
A desvantagem aqui é o trabalho de programação, mais complicado que as outras alternativas.
A vantagem é que você tem apenas uma tabela onde vc conseguirá armazenar todas as alterações em sua base de dados (usando os triggers do DBC), podendo remontar sua base a qualquer momento. Por exemplo:
LOGBDD.DBF
DataHora T (8)
Usuário C (10)
Tabela C (10)
PrimKey C (10)
Campo C (10)
Valor C (255)
ValorM M (4)
Nesta tabela (LOGBDD) você pode gravar qualquer alteração da sua base de dados, incluindo quem fez e quando fez. Além disso, atenção especial para o campo Tabela e PrimKey que irá armazenar em qual tabela a exclusão (ou mesmo alteração e inclusão) foi executada e em qual registro (PrimKey)...
Enfim... a idéia está lançada... Eu tenho uma rotina de LOG em meu sistema, mas não permito "reverter" a operação. Acredito que esse ponto é o mais complicado...
Ah, existe o FoxAudit (ferramenta paga) que faz algo parecido com isso... Dá uma olhada que vale a pena! ;-)
[]s!
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Rodolfo Duarte