Q&A

  • 파라독스에서 문자열 필드의 정의된 길이 어케 알아요!
^^;

항상 도움만 청하는 군요...



파라독스에서 문자열 필드로 정의 된

필드의 길이를 아는 방법 없나요!



고수님들 좀 부탁합니다.



즐거운 하루 보내세요!



^^;

1  COMMENTS
  • Profile
    구창민 2001.05.24 10:48
    권대웅 wrote:

    > ^^;

    > 항상 도움만 청하는 군요...

    >

    > 파라독스에서 문자열 필드로 정의 된

    > 필드의 길이를 아는 방법 없나요!

    >

    > 고수님들 좀 부탁합니다.

    >

    > 즐거운 하루 보내세요!

    >

    > ^^;







    안녕하세요~ 아래는 DB의 모든 테이블과 테이블의 필드정보 얻는



    간단한 예제입니다.



    참고하시고 항상 즐거운 프로그래밍 하시길~





    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls, Db, DBTables;



    type

    TForm1 = class(TForm)

    Database1: TDatabase;

    Table1: TTable;

    ListBox1: TListBox;

    Memo1: TMemo;

    procedure FormActivate(Sender: TObject);

    procedure ListBox1DblClick(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;



    implementation



    {$R *.DFM}



    procedure TForm1.FormActivate(Sender: TObject);

    begin

    Database1.Connected := False;

    Database1.Connected := True;



    // DataBase의 모든 테이블명을 ListBox로 읽어 들인다

    Session.GetTableNames(Database1.DatabaseName, '', False, False, ListBox1.Items);

    end;



    procedure TForm1.ListBox1DblClick(Sender: TObject);

    var

    i: Integer;

    m: string;

    begin

    if (Database1.Connected = False) or

    (ListBox1.ItemIndex < 0) then

    begin

    MessageBeep(-1);

    System.Exit;

    end;



    // 테이블명 할당

    Table1.TableName := ListBox1.Items[ListBox1.ItemIndex];

    Table1.Open;



    Memo1.Clear;

    for i := 0 to (Table1.FieldCount -1) do

    begin

    // 각 필드의 type을 구한다

    case Table1.Fields[i].DataType of

    ftUnknown : m := 'Unknown ';

    ftString : m := 'String ';

    ftSmallint : m := 'SmallInteger';

    ftInteger : m := 'Integer ';

    ftWord : m := 'Word ';

    ftBoolean : m := 'Boolean ';

    ftFloat : m := 'Float ';

    ftCurrency : m := 'Currency ';

    ftBCD : m := 'BCD ';

    ftDate : m := 'Date ';

    ftTime : m := 'Time ';

    ftDateTime : m := 'DateTime ';

    ftBytes : m := 'Byte ';

    ftVarBytes : m := 'VarBytes ';

    ftBlob : m := 'Blob ';

    ftMemo : m := 'Memo ';

    ftGraphic : m := 'Graphic ';

    end;



    // 순번 + 타입 + 크기 + 필드명

    Memo1.Lines.Add(IntToStr(i+1)+Chr(9)+m+IntToStr(Table1.Fields[i].DisplayWidth)+Chr(9)+Table1.Fields[i].DisplayLabel);

    end;

    end;



    end.