Q&A

  • TTable Component의 속성
델파이를 막 시작한 초짜입니다... 물어볼 것은 다름이 아니라...

TTable의 속성중에 TableName이 있습니다... DataBaseName속성을 정해주면 이곳에 그 DB의 Table들이 쭉 뜨는데...

여기서 TableName의 값을 ComboBox에 불러와서 선택을 하면 디비그리드에 뿌려주려 하는데...

코딩상에서 TableName 값을 불러오는 방법을 모르겠습니다...

그 값의 개수를 구한뒤 for문을 이용해서 ComboBox의 Items에 추가해 주려 하는데...

Table1.TableName.Values.Count라고 접근도 해 보았고
Table1.TableName.Items.Count라고도 접근 해 보았지만 에러만 리턴하더군요....

help를 이용해 보았는데... 예제가 없더군요...

고수들의 조언을 부탁합니다~

6  COMMENTS
  • Profile
    홍성락 2002.09.13 21:19
    hsr///////////////////////////////////////////////////////////////

      ComboBox1.Clear;
      Session.GetTableNames(Table1.DatabaseName,
        '', True, False, ComboBox1.Items);
  • Profile
    조덕진 2002.09.13 19:34
    TTable을 이용해서는 여러 테이블 리스트를 읽어 들일 수 없습니다.

    TTable의 TableName을 동적으로 연결하시려면, TDataBase를 이용해야
    합니다.

    TDataBase의 메소드 중에서 GetTableNames()를 이용하시면
    해당 데이터베이스에 등록된 테이블 리스트를 구할 수 있습니다.

    새로운 프로젝트를 구성해서, TDataBase, TDataSource, TTable, TListBox,
    TButton 을 추가하시고, TButton의 클릭이벤트에 다음의 소스를 추가하시면
    리스트박스에 데이터베이스에 등록된 테이블 리스트를 보여줍니다.

    Database1.GetTableNames(ListBox1.Items, True);


    아래는 델파이 헬프(TDataBase)에 있는 내용입니다.
    procedure GetTableNames(List: TStrings; SystemTables: Boolean = False);
    첫번째 인자는 테이블 리스트를 저장할 문자열이고, 두번째 인자는
    시스템 테이블을 리스트에 포함할지를 결정합니다.

    원하시는 답변이 됐으면 좋겠네요.
    그럼, 즐코하시길.
  • Profile
    이종원 2002.09.13 20:06
    설명해주신 대로 해 보았는데... 안되더라구요...

    TDataBase의 메소드 중에서 GetTableNames()이 없는것 같습니다...

    Delphi5를 사용하고 있거든요...

    다른 방법이 없을까요??

  • Profile
    조덕진 2002.09.13 21:26
    제가 지금 사용하는 버전은 델파이6 입니다.
    설명되는 부분은 델파이6을 기준으로 하겠습니다.

    델파이 헬프의 색인에 TDatabase를 입력하시고,
    TDatabase의 메소드 항목을 보시기 바랍니다.

    예전에 델파이4에서 테이블 리스트를 읽어들여
    스트링 그리드에 표시했던 기억이 있습니다.
    하지만, 워낙 예전의 일이라 소스도 없고 어떻게 했는지도
    모르겠네요.

    델파이5에도 이와 유사한 메소드가 있을 것이라 생각됩니다.
    그리고, 데모 프로그램을 잘 살펴보시기 바랍니다.
    델파이6에는 DB검색기를 구현한 소스가 있던데, 델파이5에도
    비슷한 것이 있을거란 생각이 드네요.

    만약, 델파이5에서 이를 지원하지 못한다면 BDE엔진의 함수를
    직접 사용해야 될 것 같습니다. 그리 추천하고 싶지는 않네요.

    원하시는 결과를 얻으셨으면 좋겠네요.
    그럼, 즐코하세요~
  • Profile
    김영남 2002.09.13 19:16
    음...그럴때 주로 사용하는게...while문장일 듯 하네요...

    물론 FOR문이 WHILE문장보다는 속도는 빠르다고 하나...^^

    피부로는 아직 느낄정도는 .... 잘 모르겟어요...에궁....돌 날라올라...^^

    table1.close;    (또는 table1.active := false;)
    table1.tablename := '테이블명';
    table1.open;     (또는 table1.active := true;)

    while not table1.eof do
    begin
       combobox1.items.add(table1.fieldbyname('필드명').asstring);
       combobox1.items.add(table1.fieldbyname('필드명').asstring);
        table1.next;
    end;


    참고로 간략하게 줄이게 된다면...

    with table1 do
    begin
       close;
       tablename := '테이블명';
       open;

       while not eof
       begin
          combobox1.items.add(fieldbyname('필드명').asstring);
          next;
       end;

    end;


    크~ 별루 간단하진 않아 보인다..ㅋㅋ~ 암튼 위처럼 마니 써요...^^
  • Profile
    이종원 2002.09.13 19:28
    우선 답변 감사합니다...
    그런데 제가 궁금한 것은 밑의 소스에서 필드명을 직접 써 주는 것이 아니라...
    특정 DB의 table이름을 코딩상으로 구해서 뿌려주려하는데...
    다시 답변 부탁드립니다~~
    • 휴초보
    • 2002.09.13 20:00
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이추형
      2002.09.14 00:31
      DBGrid의 Width를 Maximize하고 사용하시면 어떨까요? 즉, DBGrid에 ScrollBar가 생기지 않도록 한다음......
    • 이종원
    • 2002.09.13 19:08
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.09.13 21:19
      hsr///////////////////////////////////////////////////////////////   ComboBox1.Clear; ...
    • 조덕진
      2002.09.13 19:34
      TTable을 이용해서는 여러 테이블 리스트를 읽어 들일 수 없습니다. TTable의 TableName을 동적으로 연...
    • 이종원
      2002.09.13 20:06
      설명해주신 대로 해 보았는데... 안되더라구요... TDataBase의 메소드 중에서 GetTableNames()이 없는것...
    • 조덕진
      2002.09.13 21:26
      제가 지금 사용하는 버전은 델파이6 입니다. 설명되는 부분은 델파이6을 기준으로 하겠습니다. 델파이 ...
    • 김영남
      2002.09.13 19:16
      음...그럴때 주로 사용하는게...while문장일 듯 하네요... 물론 FOR문이 WHILE문장보다는 속도는 빠르다...
    • 이종원
      2002.09.13 19:28
      우선 답변 감사합니다... 그런데 제가 궁금한 것은 밑의 소스에서 필드명을 직접 써 주는 것이 아니라... ...
    • 구민오
    • 2002.09.13 10:57
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 조덕진
      2002.09.14 09:29
      이미지 파일의 포맷을 변경하기 위해선, 보정 작업이 필요합니다. 또한, JPG에 비해서 GIF 이미지의 화질...
    • 조덕진
      2002.09.13 23:03
      전 테스트용으로 MDB를 즐겨 사용합니다. 쿼리문 테스트가 대부분이지만, 님과 같은 에러메세지를 본 기...
    • 박병호
    • 2002.09.13 08:22
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2002.09.13 18:50
      라벨을 올릴 부모콘트롤^^ 먼저 폰트를 바꾸시고 올려보세요... 즐프하세요...
    • 박기용
    • 2002.09.13 07:05
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 전형식
      2002.09.13 08:42
      저도 같은 환경에서 같은 문제를 당했지만 해결점은 찾지 못했습니다. 저의 개인적인 막연한 생각같아서는...
    • 박기용
      2002.09.23 19:44
      ....
    • 조덕진
      2002.09.13 19:15
      필드값으로 Null을 입력했다 하더라도, 필드 자료형에 의한 기본용량은 차지하게 되죠. 제 경우 문자형...
    • ▲┫┃■┃콜론
      2002.09.13 23:31
      바케릭으로 잡으면 사용된 크기만 잡히나요?? 워째튼 답변들 감사하구요~ 공부에 많은 도움이 되겠네요
    • 황준동
      2002.09.13 06:05
      물론 용량을 차지하지요.
    • 얼음섬
    • 2002.09.13 04:39
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 전형식
      2002.09.13 08:44
      Mysql을 적극 추천 합니다. RDBMS기반이라 나중에 대용량 DB쓰시기도 편하구요 ^^ 무엇보다도 공짜 라는...
    • 조덕진
      2002.09.13 05:09
      생각보다 애매한 질문인 것 같네요. File기반의 DB는 엑세스, DBase, Paradox, MS-SQL, Sybase 등 다수...
    • 엄문용
    • 2002.09.13 01:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김형환
      2002.09.13 18:07
    • 이상환
    • 2002.09.13 01:50
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김종화
      2002.09.24 20:29
      델파이4에 기본적으로 들어있는 퀵리포트는 2페이지 이상일때 오류나는 버그 있습니다... 저두 ...
    • 황선욱
      2002.09.13 23:55
      QuickReport가 1페이지가 넘어간다고 에러나지는 않죠. 자세한것은 preivew하는 부분의 코드를 보아야 알...
    • 햇살
    • 2002.09.13 01:23
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 황준동
      2002.09.13 06:08
      그거는요 테이블을 오픈한 상태에서 프로그램의 이상종료(에러나 디버깅 상태에서 종료 등)를 한 경우에 발...
    • 조덕진
      2002.09.13 23:23
      "File is Locked" 나 "Table is busy"는 예외상황 아닌가요 ? 예외상황인 경우 try .. finally 문이 실행...
    • 김희곤
    • 2002.09.13 01:16
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 델퐁
    • 2002.09.13 01:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박창범
      2002.09.13 04:25
        TPackHeader = record      szName : array[0..15] of char;  &...
    • 정성훈
    • 2002.09.13 01:02
    • 0 COMMENTS
    • /
    • 0 LIKES
    • goodlsw
    • 2002.09.13 00:38
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김수경
      2002.09.13 00:59
      Delphi 명령은 잘 모르겠고.... 쩝~ Win32 API를 써 보세요 VOID GetSystemTime(    ...
    • 이추형
      2002.09.13 00:58
      procedure TForm1.Timer1Timer(Sender: TObject); begin   edit1.text := DateTimeToStr(Now);...
    • easycp
    • 2002.09.12 23:52
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 조덕진
      2002.09.13 19:09
      영상은 PC카메라를 통해 입력받는다 하더라도, 음성은 사운드카드를 통해야 하겠죠. TV수신카드 중에서...
    • 박상윤
      2002.09.14 00:34
      VFW 컴포를 쓰시는 것 같은데.. 아마도 오디오 저장 옵션이 있을 것입니다. 어디에 붙어 있는지,. 켑...