Buscar

Compactando tabelas ii

Código

{Esta rotina existe para o banco de dados local Paradox pois, mesmo os registros sendo deletados pelo usuário, as posições deles continuam sendo utilizadas mas os dados não estão mais acessíveis. }
uses BDE;
 
procedure CompactarTabela(Table:TTable);
var
  TableDesc: CRTblDesc;
  WasActive: Boolean;
  hDataBase: hDbiDB;
begin
  WasActive := Table.Active;
  Screen.Cursor := crHourglass;
try
  {abre se estava fechado para o obter o DBHandle válido}
  if not WasActive then
  begin
  Table.Open;
  {obtem o handle do banco de dados e fecha a tabela}
  hDataBase := Table.DBHandle;
  Table.Close;
  {preenche o descritor da tabela}
  FillChar(TableDesc, SizeOf (CRTblDesc), 0);
  end;
with TableDesc do
begin
  StrPCopy(szTblName, Table.TableName);
  StrPCopy(szTblType, szParadox);
  bPack := True;
end;
{reestrutura a tabela, empacotando-a}
if hdataBase<>nil then
  Check(DbiDoRestructure(hDataBase, 1, @TableDesc, nil, nil, nil, False))
else
  Application.MessageBox('A tabela não possui dados para
  compactação'
,'Compactação',0+16);
finally
  Screen.Cursor := crDefault;
  {por fim, reabre}
if WasActive then
  Table.Open;
end;
end;   //A Table que você estiver usando deve estar fechada (Active := false).

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Banco de dados
Adicionada dia: 06/06/03
Por: Felipe Monteiro
Visualizada: 1940 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009