Tuesday, February 14, 2006

Packing tables


    To pack (remove phisically all deleted records) from a Paradox table you must use this code




      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;

        Table.Open;

        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;

    To pack Dbase tables use this command



        DBIPackTable(Table1.DBHandle,Table1.Handle,nil,nil,True);

0 Comments:

Post a Comment

<< Home