Q&A

  • 파라독스에서 delete문일때 file 사이즈불변됨
파라독스인데여 delete 하고 나면 화일 사이즈가 변함이 없어요
dbase 에서는 delete 임시삭제하고 나서 PACK 하면 완전 삭제되는데요
파라독스에서 PACK 과 같은게 뭐가 있나요?
아래 소스에서 뭐가 잘못 되었는지요?


db 테이블은 파라독스
query 컴포너트 에 사용하고
query string 에 다음과 같이 코딩함
delete from lgdgdate
where lgdate betWeen and :pSDate AND :pEDate

그러고 나서 프로그램상에

dataBase name = dbfdatadbase

query.close ;
query.paramByName('pSDate').AsString := EdSCode.Text ;
query.paramByName('pEDate').AsString := EdECode.Text ;
query.execsql ;
//dbfdatadbase.Commit ;  <- 에라나서 마킹 했음

데이타는 지워져는데 탐색기에서 file 사이즈 변동 없음
1  COMMENTS
  • Profile
    KDDG_ZZOM 2004.05.14 19:00
    어디서 구했는지는모르지만...
    이런식으로하면된다고하네요...

    음... DB내에서 삭제를 해도 물리적인 저장 공간에는 남아있습니다.
    나중에 복구를 위함이지요... 그니깐.. 삭제를 한 후에 Packing을
    해야만 쓰레기 값들을 깨끗이 없앨 수 있습니다.

    dBase나 Paradox나 사용하는 함수가 다릅니다. 주의하시고요...
    dBase는 DBIPackTable이란 함수를... Paradox는 DBIDoRestructure란
    함수를 사용합니다.
    이를 간단히 사용하기 위해... 함수로 만들었습니다.

    uses
    BDE;

    function PackDBASETable( Soo : TTable ) : DBIResult;
    begin
    Result := DBIERR_NA;
    if Soo.Active = False then
       Soo.Open;
    Result := DbiPackTable( Soo.DBHandle, Soo.Handle, nil, nil, True );
    end;

    function PackPARADOXTable( Soo : TTable; DB : TDatabase ) : DBIResult;
    var
    TblDesc : CRTblDesc;
    begin
    Result := DBIERR_NA;
    FillChar( TblDesc, SizeOf( CRTblDesc ), 0 );
    StrPCopy( TblDesc.szTblName, Soo.TableName );
    TblDesc.bPack := True;
    Result := DbiDoRestructure( DB.Handle, 1, @TblDesc, nil, nil, nil, False );
    end;

    간단하죠? ^^
    단... dBase든 Paradox든... 한 번 Pack을 하면... 다시는 되돌릴 수
    없음을 주의하세요...
    그럼...