É bem simples, trata-se de abrir por código todas as tabelas na entrada do programa, portanto deixe todas as tabelas fechadas no datamodule.
procedure DataModule.OnCreate;
var Tabela, i: Integer;
begin
Tabela := 0;
for I := 0 to ComponentCount -1 do
if Components[I] is TTable then
with TTable(Components[I]) do
if (Tag = 9) and not Active then // Tag = 9 identifica as tabelas à serem abertas
try
Inc(Tabela); // contador das tabelas q já foram abertas.
lblInfo.Caption := Format('Abrindo as Tabelas (%d/%d)', [Tabela, Total]);
{aqui, informo à uma label o andamento do processo, usei o formato totalTabelasAbertas/TotalàAbrir, pode-se trocar para porcentagem ou até usar o ProgressBar.}
lblInfo.Refresh; // vital para atualizar a tela durante o processo.
Application.ProcessMessages;
Open;
except
Raise; // quem estiver a fim, pode-se colocar aqui uma verificação, se deu zebra e a zebra é indice corrompido, rodar rotina de recriação de indice da tabela.
end;
procedure DataModule.OnCreate;
var Tabela, i: Integer;
begin
Tabela := 0;
for I := 0 to ComponentCount -1 do
if Components[I] is TTable then
with TTable(Components[I]) do
if (Tag = 9) and not Active then // Tag = 9 identifica as tabelas à serem abertas
try
Inc(Tabela); // contador das tabelas q já foram abertas.
lblInfo.Caption := Format('Abrindo as Tabelas (%d/%d)', [Tabela, Total]);
{aqui, informo à uma label o andamento do processo, usei o formato totalTabelasAbertas/TotalàAbrir, pode-se trocar para porcentagem ou até usar o ProgressBar.}
lblInfo.Refresh; // vital para atualizar a tela durante o processo.
Application.ProcessMessages;
Open;
except
Raise; // quem estiver a fim, pode-se colocar aqui uma verificação, se deu zebra e a zebra é indice corrompido, rodar rotina de recriação de indice da tabela.
end;
Nenhum comentário:
Postar um comentário