파라독스인데여 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 사이즈 변동 없음
이런식으로하면된다고하네요...
음... 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을 하면... 다시는 되돌릴 수
없음을 주의하세요...
그럼...