Fórum reindexar arquivo #155800
25/04/2003
0
Em tempo de execução como reindexo uma tabela parados
Indexes secundarios exemplo: matricula e nome
AI fiz uma alteração na tabela toda mas tenho que reindexa-la
Indexes secundarios exemplo: matricula e nome
AI fiz uma alteração na tabela toda mas tenho que reindexa-la
Marcosaguiar
Curtir tópico
+ 0
Responder
Posts
25/04/2003
Marcelo.c
Dica disponível na DTDelphi:
548 - Reindexando Indices 2
Quando cai a ´Energia´ e suas Tabelas perdem os índices, esta rotina pode ser útil para restauração dos índices.
Para usar você terá que adicionar os componentes:
Table
Database { se sua aplicação possuir este componente pode usar o mesmo}
O componente Table a propriedade exclusive tem que ser true. Senão não funciona.
Procedure Reindexar(DataBase : TDatabase; Tabela : TTable);
var
List : TStrings;
i : Integer;
begin
try
Database.Connected:=true;
except
Raise;
Exit;
end;
List:=TStringList.create;
session.GetTableNames(DataBase.aliasName, ´´, true, false,List);
for i:= 0 to List.Count - 1 do
begin
if (Entidade2) then
break;
application.ProcessMessages;
Tabela.close;
Tabela.TableName:=List[i];
Try
Tabela.open;
Check(dbiRegenIndexes(Tabela.Handle));
except
Raise;
end;
end;
List.Free;
Database.Connected:=false;
end;
Para executar a rotina você pode Incluir quando sua aplicação esta sendo iniciada
Adicionando a seguinte linha.
No evento oncreate do Datamodulo
Reindexar(Dados,Table1); //Dados Nome imposto por mim ao componente Database e Table1 o componente inserido na aplicação.
548 - Reindexando Indices 2
Quando cai a ´Energia´ e suas Tabelas perdem os índices, esta rotina pode ser útil para restauração dos índices.
Para usar você terá que adicionar os componentes:
Table
Database { se sua aplicação possuir este componente pode usar o mesmo}
O componente Table a propriedade exclusive tem que ser true. Senão não funciona.
Procedure Reindexar(DataBase : TDatabase; Tabela : TTable);
var
List : TStrings;
i : Integer;
begin
try
Database.Connected:=true;
except
Raise;
Exit;
end;
List:=TStringList.create;
session.GetTableNames(DataBase.aliasName, ´´, true, false,List);
for i:= 0 to List.Count - 1 do
begin
if (Entidade2) then
break;
application.ProcessMessages;
Tabela.close;
Tabela.TableName:=List[i];
Try
Tabela.open;
Check(dbiRegenIndexes(Tabela.Handle));
except
Raise;
end;
end;
List.Free;
Database.Connected:=false;
end;
Para executar a rotina você pode Incluir quando sua aplicação esta sendo iniciada
Adicionando a seguinte linha.
No evento oncreate do Datamodulo
Reindexar(Dados,Table1); //Dados Nome imposto por mim ao componente Database e Table1 o componente inserido na aplicação.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)