Indexar minha tabela me ajudem?
Eu tenho uma tabela chamada Clientes.db, no c:\Banco de Dados \ Tabelas.
Eu queria criar um procedimento em um Botao para indexar essa tabela, mas como sou um iniciante em delphi que comando eu uso nesse botão
Obs Eu uso Banco de dados Paradox 7.
Desde já muito obrigado.
Eu queria criar um procedimento em um Botao para indexar essa tabela, mas como sou um iniciante em delphi que comando eu uso nesse botão
Obs Eu uso Banco de dados Paradox 7.
Desde já muito obrigado.
Marcelototini
Curtidas 0
Respostas
Arc
08/05/2003
Vc precisa criar as chaves da tabela atraves do DataBase Desktop
Como sua tabela esta pronta abra o Database, Tools, Utilities, Restructure, selecione o seu banco de dados
Em Table Properties, selecione Secondary Indexes, clique em Define, selecione um dos campos em Fields, clique na seta para a direita, clique em OK e de um nome para a sua chave...
No delphi, selecione a tabela, em indexname escolha a sua chave, que vai ser o indice da sua tabela
Como sua tabela esta pronta abra o Database, Tools, Utilities, Restructure, selecione o seu banco de dados
Em Table Properties, selecione Secondary Indexes, clique em Define, selecione um dos campos em Fields, clique na seta para a direita, clique em OK e de um nome para a sua chave...
No delphi, selecione a tabela, em indexname escolha a sua chave, que vai ser o indice da sua tabela
GOSTEI 0
Marcelo.c
08/05/2003
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.
Esta rotina tem solucinado muitos problema em rede paradox, pois se esta rotina não funcionar ou funcionar me mande um email para discutirmos sobre ela
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.
Esta rotina tem solucinado muitos problema em rede paradox, pois se esta rotina não funcionar ou funcionar me mande um email para discutirmos sobre ela
GOSTEI 0
Marcelo.c
08/05/2003
ou simplesmente:
uses
dbTables, DbiProcs;
begin
table1.exclusive := true;
table1.open;
dbiRegenIndexes(table.Handle);
end;
uses
dbTables, DbiProcs;
begin
table1.exclusive := true;
table1.open;
dbiRegenIndexes(table.Handle);
end;
GOSTEI 0
Vega.x
08/05/2003
Aproveitando a deixa, como eu faço para reindexar tabelas do MS-Access, utizando ADO, com Delphi 7?
GOSTEI 0