Compactação de tabelas (paradox)
31/03/2003
0
Gostaria de saber como compactar 5 tabelas que possuo no meu sistema feito em Delphi5??
obrigado pela atençao!!
fernandocento@zipmail.com.br
Fernandocneto
Posts
01/04/2003
Aroldo Zanela
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;
01/04/2003
Fernandocneto
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;
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?
01/04/2003
Aroldo Zanela
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;
Clique aqui para fazer login e interagir na Comunidade :)