esvaziar base DBF

Delphi

21/08/2003

Olá amigos,

Preciso limpar o conteúdo de um arquivo DBF, más como esse arquivo é sempre usado, a coisa está ficando feia. Acontece que no DBF os arquivos são marcados para esclusão <delete> más ficam lá até que você use o comando ´pack´ ou ´zap´.
Vocês conhecem alguma forma de fazer isso via programa? Estou tentando usar ´Tabela.zap´ e ´Tabela.pack´ más o Delphi não reconhece esses comandos. Nem no Help do Delphi encontrei qualquer referência aos comando ZAP e PACK.

Desde já agradeço.

.com


.com

.com

Curtidas 0

Respostas

Vinicius2k

Vinicius2k

21/08/2003

.com,
o método q vc deve usar eh ´tabela.emptytable´
isso vai esvaziar mesmo... não eh como o pack do clipper, q soh remove os marcados com <deleted>...


GOSTEI 0
.com

.com

21/08/2003

Obrigado Vinícius, valeu.

.com


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

21/08/2003

Colega,

Usando o BDE você pode eliminar todos os dados de uma tabela DBF por meio do método EmptyTable (Equivalente ao ZAP no Clipper), sendo necessário que a tabela esteja fechada (Diferente do clipper):
Table1.Close;
Table1.EmptyTable;
Table1.Open;


Para eliminar fisicamente os registros deletados (marcados), use a função abaixo:

procedure PackTable(TableName: TTable);
begin
  Check(dbiPackTable(TableName.dbHandle,TableName.Handle,nil,szDBASE,true));
end;


Usando:

  Table.Close;
  Table.TableName := ´NomeTabela.DBF´;
  Table.Open;
  PackTable(Table);

Lembre-se de incluir BDE na lista de uses.


GOSTEI 0
POSTAR