::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-03-07 20:09:35, Hit : 3565, Vote : 1014
 table packing 하기

The record is marked as to be deleted.
You can "pack" your table so the record will be deleted physically.

Here is some code that will do it.
Please add BDE to your uses clause...

function PackTable(Table:TTable):boolean;
var
  Props:CURProps;
  hDb: hDBIDb;
  TableDesc: CRTblDesc;
begin
  Table.Close;
  Table.Exclusive:=true;
  Table.Open;
  // Make sure the table is open exclusively so we can get the db handle...
  if not Table.Active then
    raise EDatabaseError.Create('Table must be opened to pack');
  if not Table.Exclusive then
    raise EDatabaseError.Create('Table must be opened exclusively to pack');

  // Get the table properties to determine table type...
  Check(DbiGetCursorProps(Table.Handle, Props));

  // If the table is a Paradox table, you must call DbiDoRestructure...
  if Props.szTableType = szPARADOX then
  begin
    // Blank out the structure...
    FillChar(TableDesc, sizeof(TableDesc), 0);
    // Get the database handle from the table's cursor handle...
    Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));
    // Put the table name in the table descriptor...
    StrPCopy(TableDesc.szTblName, Table.TableName);
    // Put the table type in the table descriptor...
    StrPCopy(TableDesc.szTblType, Props.szTableType);
    // Set the Pack option in the table descriptor to TRUE...
    TableDesc.bPack := True;
    // Close the table so the restructure can complete...
    Table.Close;
    // Call DbiDoRestructure...

    Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, False));
  end
  else
  begin
    // If the table is a dBASE table, simply call DbiPackTable...
    if (Props.szTableType = szDBASE) then
    begin
      Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, szDBASE, True))
    end
    else
    begin
      // Pack only works on PAradox or dBASE; nothing else...
     raise EDatabaseError.Create('Table must be either of Paradox or dBASE type to pack');
    end;
  end;
  Table.Open;
end;





491   [일반/컴포넌트] TRichEdit 의 선택된 영역만 인쇄하기  김영대 2003/03/07 4597 755
490   [시스템] CPU 종류 구하기  김영대 2003/03/07 4921 1227
489   [시스템] 사운드파일 없이 PC 스피커로 음악연주  김영대 2003/03/07 6852 930
488   [네트웍/인터넷] 프로그램으로 네트워크 드라이브 연결/해제  김영대 2003/03/07 6884 1264
487   [일반/컴포넌트] 윈도우즈 종료와 같은 그늘진 화면 만들기  김영대 2003/03/07 3202 847
486   [일반/컴포넌트] 아이콘 사이트  김영대 2003/03/07 3705 1087
485   [시스템] 윈도우즈 시스템 표준 폰트 구하기  김영대 2003/03/07 3076 855
484   [네트웍/인터넷] RS232 통신  김영대 2003/03/07 7088 1857
483   [일반/컴포넌트] 주어진 영역의 화면 캡처  김영대 2003/03/07 3612 1016
482   [일반/컴포넌트] 숫자를 영문 표기로 바꾸기  김영대 2003/03/07 4303 902
481   [일반/컴포넌트] 숫자를 한글 표기로 바꾸기  김영대 2003/03/07 3677 938
480   [일반/컴포넌트] RichEdit 의 내용을 Bitmap 으로 만들기 2  김영대 2003/03/07 3886 1439
479   [COM/OLE] MS-WORD 종료시키기  김영대 2003/03/07 2728 758
478   [윈도우즈 API] 시스템 사운드 연주하기  김영대 2003/03/07 4893 1323
477   [일반/컴포넌트] Algorithm to sort a TStringGrid #2  김영대 2003/03/07 4865 1218
476   [윈도우즈 API] 외부 프로그램의 좌표,상태 구하기  김영대 2003/03/07 3228 1026
475   [윈도우즈 API] 윈도우즈 Telnet 으로 호스트 접속하기  김영대 2003/03/07 4130 1121
474   [일반/컴포넌트] 특정한 폴더로 이동한 DOS 창 띄우기  김영대 2003/03/07 4284 1139
473   [시스템] DOS 명령어 실행하고 결과 받아오기  김영대 2003/03/07 6657 1556
472   [윈도우즈 API] NT의 현재 user가 administrative privilege 를 가지고 있는지?  김영대 2003/03/07 3085 824
471   [일반/컴포넌트] 두개의 StringGrid sync 마추기  김영대 2003/03/07 3759 1018
470   [일반/컴포넌트] 윈도우의 title bar 폰트 바꾸기  김영대 2003/03/07 3321 854
469   [네트웍/인터넷] 네트워크 공유 설정/해제 하기 (Windows 9x)  김영대 2003/03/07 4468 1087
468   [네트웍/인터넷] 네트워크 공유 정보 읽어오기 (WIndows 9x)  김영대 2003/03/07 3735 1018
467   [일반/컴포넌트] 눌려진 키보드 키의 명칭 구하기  김영대 2003/03/07 7436 1444
466   [윈도우즈 API] Windows98 에서의 SetForegroundWindow  김영대 2003/03/07 5846 1503
465   [윈도우즈 API] Task bar 에 나타나지 않는 프로그램 만들기  김영대 2003/03/07 5220 1516
464   [COM/OLE] Outlook 사용하기  김영대 2003/03/07 3572 1113
463   [시스템] 지정한 drive가 CD-ROM 인지 검사하기  김영대 2003/03/07 6400 1662
462   [시스템] 어떤 어플리케이션이 시작 되는지 hook으로 알아내기  김영대 2003/03/07 5269 1567
461   [윈도우즈 API] 윈도우즈 탐색기의 아이콘 뽑아내서 사용하기  김영대 2003/03/07 8120 1904
460   [윈도우즈 API] System Images  김영대 2003/03/07 8002 1844
459   [윈도우즈 API] 컴퓨터/파일/폴더 찾기 화면 띄우기  김영대 2003/03/07 7898 1488
458   [일반/컴포넌트] Unix-format time 을 TDateTime 로 바꾸기  김영대 2003/03/07 4148 1126
457   [일반/컴포넌트] 실행시 component 를 Move/Resize 시키기  김영대 2003/03/07 3378 964
456   [일반/컴포넌트] TMemo 를 화면크기로 인쇄하기  김영대 2003/03/07 2840 704
455   [일반/컴포넌트] SpeedButton 에 OnMouseEnter/OnMouseExit 이벤트 넣기  김영대 2003/03/07 4014 1047
454   [윈도우즈 API] 키보드의 Scroll Lock 켜기/끄기  김영대 2003/03/07 4265 1138
  [데이터베이스] table packing 하기  김영대 2003/03/07 3565 1014
452   [윈도우즈 API] reboot Windows  김영대 2003/03/07 3963 1133

[이전 10개] [1]..[11][12] 13 [14][15][16][17][18][19][20]..[25] [다음 10개]
 

Copyright 1999-2023 Zeroboard / skin by zero