Q&A

  • 데이타타입을 스트링으로...
안녕하세요.
간단한 테이블관리를 만들었는데 저부분 하나가 해결이 안되는군요.
데이타베이스에서 fieldtype 을 가져와 스트링으로 뿌리고 싶은데
좋은 방법이 없을지요?

4  COMMENTS
  • Profile
    최석기 2002.03.15 23:45
    DB를 몰 사용하시는지 모르겠지만 각 DB별로 테이블 필드 자료 얻어오는 SQL문이 있을텐데..

    아래 부분은 파라독스에서 필드정보를 리스트박스에 뿌리는 예제예요.
    참고하세요..

    procedure TForm1.Button1Click(Sender: TObject);
    const
      MyFielddefs: array[ftUnknown..ftTypedBinary] of string [11] =
        ('Unknown', 'String', 'Smallint', 'Integer',
        'Word', 'Boolean', 'Float', 'Currency', 'BCD',
        'Date', 'Time', 'DateTime', 'Bytes', 'VarBytes',

        'AutoInc', 'Blob', 'Memo', 'Graphic', 'FmtMemo',
        'ParadoxOle', 'DBaseOle', 'TypedBinary');
    var
      i, Indx: integer;
      Definition: string;
    begin
      for i := 0 to Table1.FieldCount - 1 do begin
        Definition := Table1.Fields[i].DisplayLabel;
        Definition := Definition + ' ' +
          MyFieldDefs[Table1.Fields[i].DataType];
        Table1.IndexDefs.Update;
        if Table1.Fields[i].IsIndexField then begin
          Indx := Table1.IndexDefs.Indexof(Table1.Fields[i].Name);

          if Indx > -1 then
            if ixPrimary in Table1.IndexDefs[Indx].Options then
              Definition := Definition + ' (Primary)';
        end;
        Listbox1.Items.Add(Definition);
      end;
    end;

  • Profile
    정성훈 2002.03.15 23:54
    감사합니다.

    array[ftUnknown..ftTypedBinary]
    전 이부분 대신 그냥 TFieldType 이라고 했는데..흠
    그래서 저부분에 혹시 해서 필드타입 4개인가, 5개를 빼고 썻는데
    그부분을 다 추가하니 되는군요...
    감사합니다.


  • Profile
    김규한 2002.03.15 23:41
    음.. 쿼리를 쓰셨다면요.

    var
      str : string;
    begin
      Query1.sql,add('select * from .....')....
      .... 어짜구저짜구...
      str := Query1.FieldByName('필드이름').AsString;
    이라구 하면 스트링값으로 넘어올겁니다.
    넘 오래전 기억이라.. 틀릴수도 -_-;;
    Integer라면...  Query1.FieldByName('필드이름').AsInteger..
    머 이런게 있을수 있겠죠?
    그럼.


  • Profile
    김용덕 2002.03.15 23:40
    안녕하세요.
    TField의 Property를 보면 DataType이 있거든요.
    그 값을 받아서 값에 해당하는 타입을 스트링으로 뿌려주면 될 것 같네요.