Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
Table에 관한 질문입니다.
파이파이는 초보입니다.
상세한 답변 부탁드립니다.
질문> Table에서 Pack하는 방법이 있다고 하던데...
Delete로만 지우면 파일 용량이 줄어들지 않던데....
자료실에서 봤지만 자세하게 나오지 않아
초보인 저에게는 너무 어려워 이렇게 질문 올립니다.
자세한 답변 부탁드립니다.
이왕이면 예를 들수 있는 소스를 부탁드립니다.
2
COMMENTS
s6763
•
2000.11.02 08:50
파이파이 wrote:
> 파이파이는 초보입니다.
> 상세한 답변 부탁드립니다.
>
> 질문> Table에서 Pack하는 방법이 있다고 하던데...
> Delete로만 지우면 파일 용량이 줄어들지 않던데....
>
> 자료실에서 봤지만 자세하게 나오지 않아
> 초보인 저에게는 너무 어려워 이렇게 질문 올립니다.
>
> 자세한 답변 부탁드립니다.
> 이왕이면 예를 들수 있는 소스를 부탁드립니다.
procedure PackTable(Table: TTable);
{ This routine copied and modified from demo unit TableEnh.pas
from Borland Int. }
var
{ FCurProp holds information about the structure of the table }
FCurProp: CurProps;
{ Specific information about the table structure, indexes, etc. }
TblDesc: CRTblDesc;
{ Uses as a handle to the database }
hDb: hDbiDB;
{ Path to the currently opened table }
TablePath: array[0..dbiMaxPathLen] of Char;
Exclusive: Boolean;
begin
if not Table.Active then _DBError(SDataSetClosed);
Check(DbiGetCursorProps(Table.Handle, FCurProp));
if StrComp(FCurProp.szTableType, szParadox) = 0 then begin
{ Call DbiDoRestructure procedure if PARADOX table }
hDb := nil;
{ Initialize the table descriptor }
FillChar(TblDesc, SizeOf(CRTblDesc), 0);
with TblDesc do begin
{ Place the table name in descriptor }
StrPCopy(szTblName, Table.TableName);
{ Place the table type in descriptor }
StrCopy(szTblType, FCurProp.szTableType);
bPack := True;
bProtected := FCurProp.bProtected;
end;
{ Get the current table's directory. This is why the table MUST be
opened until now }
Check(DbiGetDirectory(Table.DBHandle, False, TablePath));
{ Close the table }
Table.Close;
try
{ NOW: since the DbiDoRestructure call needs a valid DB handle BUT the
table cannot be opened, call DbiOpenDatabase to get a valid handle.
Setting TTable.Active = False does not give you a valid handle }
Check(DbiOpenDatabase(nil, szCFGDBSTANDARD, dbiReadWrite, dbiOpenExcl, nil,
0, nil, nil, hDb));
{ Set the table's directory to the old directory }
Check(DbiSetDirectory(hDb, TablePath));
{ Pack the PARADOX table }
Check(DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False));
{ Close the temporary database handle }
Check(DbiCloseDatabase(hDb));
finally
{ Re-Open the table }
Table.Open;
end;
end
else if StrComp(FCurProp.szTableType, szDBase) = 0 then begin
{ Call DbiPackTable procedure if dBase table }
Exclusive := Table.Exclusive;
Table.Close;
try
Table.Exclusive := True;
Table.Open;
try
Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, nil, True));
finally
Table.Close;
end;
finally
Table.Exclusive := Exclusive;
Table.Open;
end;
end
else DbiError(DBIERR_WRONGDRVTYPE);
end;
0
0
삭제
수정
댓글
코끼리
•
2000.11.02 00:23
만약 오라클 for Server를 쓰신다면 Truncate 명령이 있는데...
글쎄요
질문하신 내용이 무언지 몰라 죄송합니다.
파이파이 wrote:
> 파이파이는 초보입니다.
> 상세한 답변 부탁드립니다.
>
> 질문> Table에서 Pack하는 방법이 있다고 하던데...
> Delete로만 지우면 파일 용량이 줄어들지 않던데....
>
> 자료실에서 봤지만 자세하게 나오지 않아
> 초보인 저에게는 너무 어려워 이렇게 질문 올립니다.
>
> 자세한 답변 부탁드립니다.
> 이왕이면 예를 들수 있는 소스를 부탁드립니다.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
김만기
2000.11.02 00:51
0
COMMENTS
/
0
LIKES
RichEdit나 memo 컴포넌트의 용량제한?
지영일
2000.11.02 00:39
0
COMMENTS
/
0
LIKES
<도움 부탁드립니다> DbChart(Query)와 MSSQL7.0 연동
파이파이
•
2000.11.02 00:18
2
COMMENTS
/
0
LIKES
Table에 관한 질문입니다.
파이파이는 초보입니다. 상세한 답변 부탁드립니다. 질문> Table에서 Pack하는 방법이 있다고 하던데... Delete로만 지우면 파일 용량이 줄어들지 않던데.... 자료실에서 봤지만 자세하게 나오지 않아 초보인 저에게는 너무 어려워 이렇게...
s6763
•
2000.11.02 08:50
파이파이 wrote: > 파이파이는 초보입니다. > 상세한 답변 부탁드립니다. > > 질문> Table에서 Pack...
코끼리
•
2000.11.02 00:23
만약 오라클 for Server를 쓰신다면 Truncate 명령이 있는데... 글쎄요 질문하신 내용이 무언지 몰라 죄...
왕초보
•
2000.11.02 00:11
1
COMMENTS
/
0
LIKES
다중검색에 대해서 꼭!!
이선경
•
2000.11.02 00:25
무슨 에러인지 말씀하셔야 할것 같은데요......... 버튼을 하나로 통일하려면 들어온 텍스트의 첫바이트...
김춘수
•
2000.11.02 00:02
2
COMMENTS
/
0
LIKES
insert into select 문에 대해서
코끼리
•
2000.11.02 00:09
김춘수 wrote: > insert into select where 문에 대해서 설명해주세요 > 예제로 설명 부탁드립니다......
초보
•
2000.11.02 00:08
김춘수 wrote: > insert into select where 문에 대해서 설명해주세요 > 예제로 설명 부탁드립니다......
김춘수
2000.11.02 00:02
0
COMMENTS
/
0
LIKES
insert into select 문에 대해서
사발우성
•
2000.11.01 23:44
2
COMMENTS
/
0
LIKES
데이터의 로딩속도문제....ㅠㅠ
까마귀
•
2000.11.02 01:04
사발우성 wrote: > > 안뇽하신가여 고수님들... 가을비가 계속내리는군여.. 모두들 감기조심 하이소..^...
사발우성
•
2000.11.02 01:50
까마귀님 답변감솨여 ^^ 전 경상북도 구미에 살고 있슴당..^^ 근디여.. 이상하게두 인스톨쉴드 거친...
이태일
•
2000.11.01 23:34
1
COMMENTS
/
0
LIKES
TListView에서 Exit시 Focus된 Line이 어딘지 시각적으로는 ...
김경식
•
2000.11.01 23:39
이태일 wrote: > TListView에서 다른 컴퍼넌트, 예를 들어 Edit로 Focus를 이동하면 내가 이전에 TListVie...
어린왕자
•
2000.11.01 23:33
2
COMMENTS
/
0
LIKES
해상도에 상관없이 화면 스크린의 Bottom값을 알고 싶습니다.
오성욱
•
2000.11.01 23:35
어린왕자 wrote: > 안녕하세요..영원한 델초보 어린왕자입니다. > 화면 스크린의 Bottom값을 알고 싶습니...
웬참견
•
2000.12.19 00:41
근데 높이중 테스크바의 크기는 빼야 되쟎아요. (테스크바가 옆으로 가면? , 테스크바가 무쟈게 크면? ^^;...
철
2000.11.01 22:51
0
COMMENTS
/
0
LIKES
recerd형변수를 참조하려면?
박상수
•
2000.11.02 02:36
1
COMMENTS
/
0
LIKES
DB의 JPG 이미지를 DBCtrlGrid 상에 표현할 수 있는 방법은?
김병식
•
2000.11.02 05:34
박상수 wrote: > DBCtrlGrid 에 Jpg를 출력하려고 합니다. > Image 컴포넌트로 DB에 Jpg를 저장했구여......
델파이초보
•
2000.11.01 22:12
1
COMMENTS
/
0
LIKES
오각형 그리는것좀 가르쳐 주세요.
유레카
•
2000.11.21 06:00
Canvas.Polygon([Point(10, 10), Point(30, 10), Point(130, 30), Point(240, 120)]); 이라는 함수...
김택훈
•
2000.11.01 22:11
1
COMMENTS
/
0
LIKES
웹브라우저에서 새로운 창으로 페이지가 안뜨게 하는 방법을 알려주세요!
전형식
•
2001.01.17 01:43
김택훈 wrote: > 어떤 웹페이지에서 버튼을 클릭하면, 새로운 창으로 웹페이지가 뜹니다. > > 그 웹페...
김영주
2000.11.01 22:02
0
COMMENTS
/
0
LIKES
[ActiveX]델파이에서 Spread의 사용질문
몽심이
2000.11.01 21:36
0
COMMENTS
/
0
LIKES
MDI프로그램에서 CHILD FORM만 보이게 할 수 있나요?
강성훈
•
2000.11.01 21:09
3
COMMENTS
/
0
LIKES
파일리스트 박스에서 파일명만 가져오기
강성훈
•
2000.11.01 22:47
파일 확장자가 그러니깐 .xxx 까지 전부 지우고 나머지 순수 파일명만 가져오고 싶어서요... 그렇게 하...
컴맹
•
2000.11.01 22:24
showmessage(FileListBox1.Items[FileListBox1.itemindex]); 아마두 이렇게 하묜 되지 않을까여... ...
아이언
•
2000.11.01 21:23
ExtractFileName(String); //전체 경로에서 파일명과 확장자만 가져오기 ExtractFileExt(String); //전...
Soona
2000.11.01 20:56
0
COMMENTS
/
0
LIKES
TMemo 상자에 러시아어를 넣을려고 하는데....
강성훈
2000.11.01 20:52
0
COMMENTS
/
0
LIKES
루트에서 폴더생성시 에러
최일용
2000.11.01 20:19
0
COMMENTS
/
0
LIKES
델파이의 웹서버와 분산처리를 Unix에서도 ?
New7
2000.11.01 20:06
0
COMMENTS
/
0
LIKES
PrinterSetupDialog 에 대하여...
파이파이
2000/11/02 00:18
Views
216
Likes
0
Comments
2
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> 파이파이는 초보입니다.
> 상세한 답변 부탁드립니다.
>
> 질문> Table에서 Pack하는 방법이 있다고 하던데...
> Delete로만 지우면 파일 용량이 줄어들지 않던데....
>
> 자료실에서 봤지만 자세하게 나오지 않아
> 초보인 저에게는 너무 어려워 이렇게 질문 올립니다.
>
> 자세한 답변 부탁드립니다.
> 이왕이면 예를 들수 있는 소스를 부탁드립니다.
procedure PackTable(Table: TTable);
{ This routine copied and modified from demo unit TableEnh.pas
from Borland Int. }
var
{ FCurProp holds information about the structure of the table }
FCurProp: CurProps;
{ Specific information about the table structure, indexes, etc. }
TblDesc: CRTblDesc;
{ Uses as a handle to the database }
hDb: hDbiDB;
{ Path to the currently opened table }
TablePath: array[0..dbiMaxPathLen] of Char;
Exclusive: Boolean;
begin
if not Table.Active then _DBError(SDataSetClosed);
Check(DbiGetCursorProps(Table.Handle, FCurProp));
if StrComp(FCurProp.szTableType, szParadox) = 0 then begin
{ Call DbiDoRestructure procedure if PARADOX table }
hDb := nil;
{ Initialize the table descriptor }
FillChar(TblDesc, SizeOf(CRTblDesc), 0);
with TblDesc do begin
{ Place the table name in descriptor }
StrPCopy(szTblName, Table.TableName);
{ Place the table type in descriptor }
StrCopy(szTblType, FCurProp.szTableType);
bPack := True;
bProtected := FCurProp.bProtected;
end;
{ Get the current table's directory. This is why the table MUST be
opened until now }
Check(DbiGetDirectory(Table.DBHandle, False, TablePath));
{ Close the table }
Table.Close;
try
{ NOW: since the DbiDoRestructure call needs a valid DB handle BUT the
table cannot be opened, call DbiOpenDatabase to get a valid handle.
Setting TTable.Active = False does not give you a valid handle }
Check(DbiOpenDatabase(nil, szCFGDBSTANDARD, dbiReadWrite, dbiOpenExcl, nil,
0, nil, nil, hDb));
{ Set the table's directory to the old directory }
Check(DbiSetDirectory(hDb, TablePath));
{ Pack the PARADOX table }
Check(DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False));
{ Close the temporary database handle }
Check(DbiCloseDatabase(hDb));
finally
{ Re-Open the table }
Table.Open;
end;
end
else if StrComp(FCurProp.szTableType, szDBase) = 0 then begin
{ Call DbiPackTable procedure if dBase table }
Exclusive := Table.Exclusive;
Table.Close;
try
Table.Exclusive := True;
Table.Open;
try
Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, nil, True));
finally
Table.Close;
end;
finally
Table.Exclusive := Exclusive;
Table.Open;
end;
end
else DbiError(DBIERR_WRONGDRVTYPE);
end;