안녕하세요 좋은 생각입니다.
TTable컴포넌트를 사용하여 테이블을 수정, 추가, 삽일 등을 할 수 있고
테이블을 만들 수도 있습니다.
우선 테이블을 만드는 순서를 보면
1. Table1.Close 기존에 열려있는 테이블을 닫아줍니다.'
2. TableName을 설정하고 테이블 형태를 지정합니다.
테이블형태를 파라독스, 디베이스, 아스키 형태로 만들 것인지를 결정
하는 것입니다.
테이블 형태는
ttDefault : 자동으로 BDE의 설정된 테이블 형태로 설정하는 것을 의미
ttParadox : Paradox형 태이블을 만든다는 의미
ttDBase : DBASE형 태이블을 만든다는 의미
ttASCII : ASCII텍스트 데이블을 만든다는 의미
Table1.TableName := 'Test';
Table1.TableType := ttParadox;
뭐 이런식이 되겠네요...
3.그 다음으로 필드를 만듭니다.
필드를 만들 때 필드 이름, 데이터형, 길이(크기), 입력유무를 꼭 설정
을 하셔야 합니다.
입력 유무는 True 이면 꼭 입력을 해야하고 False는 입력을 하지 않아도
되는 필드를 의미 합니다.
//Name 필드를 문자열 10자리에 넣을 수 있게 만든다. 꼭 입력해야하는
//필드를 의미
Table1.FieldDefs.Add('Name', ftString, 10, True)
//Date필드를 날짜형으로 만든다. 입력은 하지 않아도 된다.
Table1.FieldDefs.Add('Date', ftDate, 0, False)
//Size필드를 정수형으로 만든다. 입력은 하지 않아도 된다.
Table1.FieldDefs.Add('Size', ftInteger, 0, False)
사용되는 데이터형은 다음과 같습니다.
db.pas에 필드형이 다음과 같이 정의 되어 있습니다.
TFieldType =
(ftUnknown, ftString, ftSmallint, ftInteger, ftWord,
ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime,
ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo,
ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar, ftWideString,
ftLargeint, ftADT, ftArray, ftReference, ftDataSet);
필드의 의미는 보시면 아실것이고
4. 인덱스 필드를 만듭니다.
인덱스 필드는 말그데로 정렬에 필요한 기준이 되는 필드를 정의 하기 위함인데
만약 필드를 정렬하지 않으려면 만들지 않아도 상관없습니다.
인덱스 기능을 제공하는 프로퍼티는 IndexDefs프로퍼티입니다.
추가로 인덱스를 추가하기 전에 Clear프로퍼티를 이용하여 기존의 인덱스 내용을 모두
지워 주는게 좋습니다.
db.pas에 인덱스의 종류가 다음과 같이 정의 되어 있습니다.
TIndexOption = (ixPrimary, ixUnique, ixDescending, ixCaseInsensitive,
ixExpression, ixNonMaintained);
TIndexOptions = set of TIndexOption;
ixPrimary : 테이블의 주 인덱스로 만든다.
ixUnique : 중복이 되지 않는 인덱스를 만든다.
ixDescending : 내림차순의 인덱스로 만든다.
ixExpression : dBASE의 키 설정에 따라 의존한다.
ixCaseInsensitive : 변화가 없는 인덱스를 만들어 준다.
이런 의미가 되겠구...
실질적으로 인덱스를 설정할때는
//인덱스 내용을 모두 지운다.
Table1.IndexDefs.Clear
//NAME를 인덱스로 만들어 준다.
Table1.IndexDefs.Add('NAMEINDEX', 'NAME', [ixPrimary, ixUnique]);
5. CreateTable메소드를 이용하여 작업한 내용을 참조 합니다.
이렇게 기본적인 Table설정이 끝났으면 이제 테이블을 생성합니다.
그러면 데이블이 만들어 진것을 확인하실 수 있습니다.
Table1.Open하셔서 데이터를 추가 삽입등으로 작업을 하시면 됩니다.
Table1을 만드는 간단한 예제
procedure TFrom1.BitBtn1Click(Sender: TObject);
begin
Table1.Close;
Table1.TableName := 'TEST';
Table1.TableType := ttParadox;
Table1.FieldDefs.Add('Name', ftString, 10, True);
Table1.FieldDefs.Add('Date', ftDate, 0, False);
Table1.FieldDefs.Add('Szie', ftInteger, 0, False);
Table1.IndexDefs.Clear;
Table1.IndexDefs.Add('NAMEINDEX', 'NAME', [ixPrimary, ixUnique]);
Table1.CreateTable;
Table1.Open;
end;
end;
이렇게 하시면 기본 DataBase에 설정된 엘리어스에 Test.DB파일이 만들어 지게 됩니다
만약 지정되지 않으면 실행파일이 있는 위치에 만들어 지구요...
하실 수 있습니다.
그리고 필드가 있는지의 검사여부는 Find메소드나 아니면 TTable에 보면 FieldList라는
프로퍼티가 있는데 말그대로 Table의 필드 리스트가 들어 있습니다...
여기서 그 필드가 있는지 없는지 조사해서 없으면 만들어 주는 식으로 하시면 어떨지...
그리고 현태이블의 필드에 관한내용은 저도 아직 확인 해보지 못했습니다.
하지만 db.pas에 FieldDefs객체에는 분명히 FieldCreate라는 메소드와 필드생성에
관련된 매소드가 Public에 공개되어 있는 것으로 보아 분명히 가능할 것 같습니다.
하지만 전 확인을 해보지 못했습니다...
약간이나마 도움이 되셨으면 좋겠네요....
그럼...새해 복많이 받으시구요...
꿈의 언덕에서 /좋/은/생/각/
|