Q&A

  • DB의 내용을 한 번에 지우고 크기도 줄이는..
임시로 사용한 테이블을 다시 NULL Table(?, 아무 데이터도 없는)로



만들려고 합니다. 근데 프로그램 내에서 레코드를 일일이 지우면



자료는 삭제 되는데, 실제 DB의 크기는 그대로 입니다.



델파이에 포함된 Database Desktop의 utility의 'Empty'를 사용하면



테이블이 처음 만든것처럼 크기도 줄어들고 데이터도 날라가는데



프로그램 내에서 SQL을 사용하던 함수를 쓰던,



그런 효과를 줄 수 있는 방법이 있나요???



무지 궁금하네요....



고수님들의 조언 부탁드립니다.



그리고, 미리 감사합니다.(꾸벅)





2  COMMENTS
  • Profile
    구창민 1999.07.09 08:50
    전진우 께서 말씀하시기를...

    > 임시로 사용한 테이블을 다시 NULL Table(?, 아무 데이터도 없는)로

    > 만들려고 합니다. 근데 프로그램 내에서 레코드를 일일이 지우면

    > 자료는 삭제 되는데, 실제 DB의 크기는 그대로 입니다.

    > 델파이에 포함된 Database Desktop의 utility의 'Empty'를 사용하면

    > 테이블이 처음 만든것처럼 크기도 줄어들고 데이터도 날라가는데

    > 프로그램 내에서 SQL을 사용하던 함수를 쓰던,

    > 그런 효과를 줄 수 있는 방법이 있나요???

    > 무지 궁금하네요....

    > 고수님들의 조언 부탁드립니다.

    > 그리고, 미리 감사합니다.(꾸벅)



    전진우님 안녕하세요?

    EmptyTable 메소드를 사용해보시지 않으셨다면,

    아래 그나마 안전하게 삭제하는 함수를 한번 사용해 보세요.

    그리고, 말씀하신 내용이 Pack(삭제표시된 레코드를 물리적으로 삭제)

    하고 싶으신 거라면 '델파이 헬퍼'의 팁/강좌란에서

    'Pack'이라고 입력하셔서 검색해서 응용하시면,

    원하시는 것을 구현할수 있으리라 생각되네요.

    그럼.. 즐거운 프로그래밍 되세요~



    procedure TForm1.EmptyTable(const DbName, TbName: string);

    begin

    if MessageDlg('Empty ' + TbName + ' Table? Are yousure?',

    mtConfirmation, [mbYes, mbNo], 0) = mrYes then

    begin

    with TTable.Create(nil) do

    try

    DatabaseName := DbName;

    TableName := TbName;

    repeat

    try

    EmptyTable;

    ShowMessage(TbName + ' Table Empty!');

    exit;

    except

    on EDatabaseError do

    begin

    if MessageDlg('EmptyTable failed',mtError,

    [mbAbort, mbRetry], 0) <> mrRetry then

    begin

    raise;

    end;

    end;

    end;

    until false;

    finally

    Free;

    end;

    end;

    end;





  • Profile
    김재용 1999.07.09 08:17
    그 방법보다는 코드로 테이블을 생성하는것은 어떨까요?

    그 데이타화일을 지우고 그곳에 새로운 테이블을 같은이름으로 생성을 시키는것이 더 빠르지 않을런지요...

    코드로 테이블을 생성하는 방법은 여러 델파이 사이트에 팁이나 강좌로 올라와 있습니다.





    전진우 께서 말씀하시기를...

    >

    > 임시로 사용한 테이블을 다시 NULL Table(?, 아무 데이터도 없는)로

    >

    > 만들려고 합니다. 근데 프로그램 내에서 레코드를 일일이 지우면

    >

    > 자료는 삭제 되는데, 실제 DB의 크기는 그대로 입니다.

    >

    > 델파이에 포함된 Database Desktop의 utility의 'Empty'를 사용하면

    >

    > 테이블이 처음 만든것처럼 크기도 줄어들고 데이터도 날라가는데

    >

    > 프로그램 내에서 SQL을 사용하던 함수를 쓰던,

    >

    > 그런 효과를 줄 수 있는 방법이 있나요???

    >

    > 무지 궁금하네요....

    >

    > 고수님들의 조언 부탁드립니다.

    >

    > 그리고, 미리 감사합니다.(꾸벅)

    >

    >