Compactação de tabelas (paradox)

31/03/2003

0

Olá pessoal!!!

Gostaria de saber como compactar 5 tabelas que possuo no meu sistema feito em Delphi5??

obrigado pela atençao!!

fernandocento@zipmail.com.br


Fernandocneto

Fernandocneto

Responder

Posts

01/04/2003

Aroldo Zanela

Olá pessoal!!! Gostaria de saber como compactar 5 tabelas que possuo no meu sistema feito em Delphi5?? obrigado pela atençao!! fernandocento@zipmail.com.br


               procedure ParadoxPack(Table : TTable); 
               var 
                 TBDesc : CRTblDesc; 
                 hDb: hDbiDb; 
                 TablePath: array[0..dbiMaxPathLen] of char; 
               begin 
                 FillChar(TBDesc,Sizeof(TBDesc),0); 
                 with TBDesc do begin 
                   StrPCopy(szTblName,Table.TableName); 
                   StrPCopy(szTblType,szParadox); 
                   bPack := True; 
                 end; 
                 hDb := nil; 
                 Check(DbiGetDirectory(Table.DBHandle, True, TablePath)); 
                 Table.Close; 
                 Check(DbiOpenDatabase(nil, ´STANDARD´, dbiReadWrite, 
                   dbiOpenExcl,nil,0, nil, nil, hDb)); 
                 Check(DbiSetDirectory(hDb, TablePath)); 
                 Check(DBIDoRestructure(hDb,1,@TBDesc,nil,nil,nil,False)); 
                 Table.Open; 
               end; 



Responder

01/04/2003

Fernandocneto

[quote:a9f5b1ea10=´Aroldo Zanela´]
Olá pessoal!!! Gostaria de saber como compactar 5 tabelas que possuo no meu sistema feito em Delphi5?? obrigado pela atençao!! fernandocento@zipmail.com.br


               procedure ParadoxPack(Table : TTable); 
               var 
                 TBDesc : CRTblDesc; 
                 hDb: hDbiDb; 
                 TablePath: array[0..dbiMaxPathLen] of char; 
               begin 
                 FillChar(TBDesc,Sizeof(TBDesc),0); 
                 with TBDesc do begin 
                   StrPCopy(szTblName,Table.TableName); 
                   StrPCopy(szTblType,szParadox); 
                   bPack := True; 
                 end; 
                 hDb := nil; 
                 Check(DbiGetDirectory(Table.DBHandle, True, TablePath)); 
                 Table.Close; 
                 Check(DbiOpenDatabase(nil, ´STANDARD´, dbiReadWrite, 
                   dbiOpenExcl,nil,0, nil, nil, hDb)); 
                 Check(DbiSetDirectory(hDb, TablePath)); 
                 Check(DBIDoRestructure(hDb,1,@TBDesc,nil,nil,nil,False)); 
                 Table.Open; 
               end; 
[/quote:a9f5b1ea10]


Caro colega...onde há a referencia TABLE tenho que substituir pelo nome da minha tabela?? e outra dúvida essa rotina serve pra compactar apenas uma tabela de cada vez ou mais?


Responder

01/04/2003

Aroldo Zanela

Fernando,

Coloque BDE na lista de uses;
No código do evento click do button1, troque NomeAlias para o alias de sua aplicação.

procedure TForm1.Button1Click(Sender: TObject);
var ListaTabelas: TStringList;
nI: Integer;
    Tabela: TTable;
    NomeAlias: String;
begin
NomeAlias:= ´DBDEMOS´;
ListaTabelas := TStringList.Create;
  Tabela        := TTable.Create(Self);
  Tabela.DatabaseName := NomeAlias;

  Session.GetTableNames(NomeAlias, ´*.db´,False, False, ListaTabelas);
For nI := 0 To ListaTabelas.Count-1 do
  begin
  Tabela.TableName:= ListaTabelas.Strings[nI];
    lblTabela.Caption:= ListaTabelas.Strings[nI];
    Application.ProcessMessages;
    Tabela.Open;
  ParadoxPack(Tabela);
    Tabela.Close;
  end;
  ShowMessage(´Fim´);
end;

procedure TForm1.ParadoxPack(Table: TTable);
var TBDesc : CRTblDesc;
hDb: hDbiDb;
TablePath: array[0..dbiMaxPathLen] of char;
begin
FillChar(TBDesc,Sizeof(TBDesc),0);
with TBDesc do begin
StrPCopy(szTblName,Table.TableName);
StrPCopy(szTblType,szParadox);
    bPack := True;
  end;
hDb := nil;
  Check(DbiGetDirectory(Table.DBHandle, True, TablePath));
  Table.Close;
  Check(DbiOpenDatabase(nil, ´STANDARD´, dbiReadWrite,
  dbiOpenExcl,nil,0, nil, nil, hDb));
  Check(DbiSetDirectory(hDb, TablePath));
  Check(DBIDoRestructure(hDb,1,@TBDesc,nil,nil,nil,False));
  Table.Open;
end;



Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar