Q&A

  • 파라독스에서 길이를 알려면 어떻게 하면 됩니까?
파라독스에서 길이를 알려면 어떻게 하면 됩니까?
3  COMMENTS
  • Profile
    김기수 2002.02.18 01:55
    레코드? 필드?
    정확한 질문이 정확한 답변을 얻습니다.

  • Profile
    권대웅 2002.02.18 19:03


    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.
  • Profile
    박영수 2002.02.18 18:18
    예 죄송합니다.
    제 입장만 생각했네요. ^^;
    필드를 알고 싶습니다. 아신다면 가르쳐주면 정말 고맙겠습니다.
    수고하십시오.