Q&A

  • TDatabase 컴포넌트의 효력 발생 범위는 어디까지?
DataModule(DM)을 생성하고 그 위해 TDatabase(TDB)컴포넌트를 올려 놓고 DatabaseName(DBNAME)을 세팅한 후 그 DM위에 여러 DataSet(DS) 컴포넌트(TQuery, TStoredProc) 를 올려 놓고 잘 사용하였습니다.



근데 컴포넌트들이 한 DM( DM_1 )위에 너무 많이 올려져서 관리하기가 어려워짐에 따라

DM을 하나 더(DM_2) 만들고 그위에 DS들을 올려놓았는데, DM_2위에 있는 DS들의

DBNAME속성을 DM_1위에 있는 TDB컴퍼넌트의 DBNAME속성으로 할당할 수가 없습니다.



그렇다면 DM_2에도 똑같은 TDB컴포넌트를 하나 더 만들어서 사용해야 한다는 얘기인 것 같은데... 만약 한 DM위에 여러 TDB를 쓴다면 DM을 많이 만들수록 중복해서 TDB를 쓰게 된다는 얘기인 것같습니다.



글로벌하게 TDB를 정의해서 다른 모든 DM에서 그 TDB를 쓸 수 있는 방법은 없을까요?



4  COMMENTS
  • Profile
    하얀까마귀 2000.06.13 21:20
    안녕하세요 하얀까마귀 입니다..



    상관없는데요...



    dm이 몇개이든간에. tdb는 한개만 있으면 됩니다..



    그리고 DataSet의 DataBaseNAme는 TDB콤포넌트에서 읽어 오는게 아니라 BDE의 설정에서



    읽어 오니까.. 전혀 상관이 없는겁니다.



    list 에 해당 디비이름만 안나오는 건지 아니면 다 안나온다는 건지 모르겟네요..



    모두 안나오면 다른쪽에 이상이 있는거고.. 하나만 안나오진 않을것 같네요...



    그럼.. 즐거운시간 되세요



    - 하얀까마귀 -





    정우석 wrote:

    > DataModule(DM)을 생성하고 그 위해 TDatabase(TDB)컴포넌트를 올려 놓고 DatabaseName(DBNAME)을 세팅한 후 그 DM위에 여러 DataSet(DS) 컴포넌트(TQuery, TStoredProc) 를 올려 놓고 잘 사용하였습니다.

    >

    > 근데 컴포넌트들이 한 DM( DM_1 )위에 너무 많이 올려져서 관리하기가 어려워짐에 따라

    > DM을 하나 더(DM_2) 만들고 그위에 DS들을 올려놓았는데, DM_2위에 있는 DS들의

    > DBNAME속성을 DM_1위에 있는 TDB컴퍼넌트의 DBNAME속성으로 할당할 수가 없습니다.

    >

    > 그렇다면 DM_2에도 똑같은 TDB컴포넌트를 하나 더 만들어서 사용해야 한다는 얘기인 것 같은데... 만약 한 DM위에 여러 TDB를 쓴다면 DM을 많이 만들수록 중복해서 TDB를 쓰게 된다는 얘기인 것같습니다.

    >

    > 글로벌하게 TDB를 정의해서 다른 모든 DM에서 그 TDB를 쓸 수 있는 방법은 없을까요?

    >

  • Profile
    정우석 2000.06.14 00:00
    다시 질문합니다.

    DM_1 에 있는 DBNAME은 DM_2에서 볼 수 없습니다.

    DM_2에서는 단지 BDE에 있는 Alias만 보일 따름입니다.

    TDB를 이용하는 이유는 Login Prompt를 피할 수 있기 때문입니다.

    Login Prompt를 띄우지 않고 바로 DS를 이용할 수 있다면

    그냥 BDE Alias를 써도 될 겁니다.



    제 질문의 요지는 한 DM에 있는 DBNAME을 Alias로 올려서 모든 DM에서 볼 수 있도록

    하는 방법입니다.



    하얀까마귀 wrote:

    > 안녕하세요 하얀까마귀 입니다..

    >

    > 상관없는데요...

    >

    > dm이 몇개이든간에. tdb는 한개만 있으면 됩니다..

    >

    > 그리고 DataSet의 DataBaseNAme는 TDB콤포넌트에서 읽어 오는게 아니라 BDE의 설정에서

    >

    > 읽어 오니까.. 전혀 상관이 없는겁니다.

    >



    > list 에 해당 디비이름만 안나오는 건지 아니면 다 안나온다는 건지 모르겟네요..

    >

    > 모두 안나오면 다른쪽에 이상이 있는거고.. 하나만 안나오진 않을것 같네요...

    >

    > 그럼.. 즐거운시간 되세요

    >

    > - 하얀까마귀 -

    >

    >



  • Profile
    하얀까마귀 2000.06.14 08:46
    안녕하세요 하얀까마귀 입니다..



    TDataBase에 설정하신 DataBaseName을 쓰셔도 되고.. 또한 TDataBase에 사용하신



    AliasName즉 BDE에 있는걸 사용하셔도 됩니다.



    즉 이렇게 하셔도 마찬가지로 로그인 창은 안뜹니다..



    그런데.. BDE에 없는 어떤 설정을 하셧다면 꼭 쓰셔야 겠죠???



    이런 경우 반드시 원래의 DataModule를 열어두신 다음 작업을 하세요 그럼..



    리스트에 나올겁니다..



    이런 디쟈인시 나오는 리스트의 경우 코딩된 내용을 불러 와야 하는경우



    반드시 해당 창을 열어 두어야 합니다..



    음.. 예를들면.. 폼1에 DataSource를 두고 DM메 있는 테이블과 연결을 하려고 하면



    리스트에 안나오죠???



    uses 절에 넣어주어도 안나옵니다..



    Dm을 오픈해 놓고 작업을 하시면 리스트가 나오는걸 볼수 있을겁니다..



    .... ^^



    그럼.. 즐거운시간 되세요..



    - 하얀까마귀 -





    정우석 wrote:

    > 다시 질문합니다.

    > DM_1 에 있는 DBNAME은 DM_2에서 볼 수 없습니다.

    > DM_2에서는 단지 BDE에 있는 Alias만 보일 따름입니다.

    > TDB를 이용하는 이유는 Login Prompt를 피할 수 있기 때문입니다.

    > Login Prompt를 띄우지 않고 바로 DS를 이용할 수 있다면

    > 그냥 BDE Alias를 써도 될 겁니다.

    >

    > 제 질문의 요지는 한 DM에 있는 DBNAME을 Alias로 올려서 모든 DM에서 볼 수 있도록

    > 하는 방법입니다.

    >

    > 하얀까마귀 wrote:

    > > 안녕하세요 하얀까마귀 입니다..

    > >

    > > 상관없는데요...

    > >

    > > dm이 몇개이든간에. tdb는 한개만 있으면 됩니다..

    > >

    > > 그리고 DataSet의 DataBaseNAme는 TDB콤포넌트에서 읽어 오는게 아니라 BDE의 설정에서

    > >

    > > 읽어 오니까.. 전혀 상관이 없는겁니다.

    > >

    >

    > > list 에 해당 디비이름만 안나오는 건지 아니면 다 안나온다는 건지 모르겟네요..

    > >

    > > 모두 안나오면 다른쪽에 이상이 있는거고.. 하나만 안나오진 않을것 같네요...

    > >

    > > 그럼.. 즐거운시간 되세요

    > >

    > > - 하얀까마귀 -

    > >

    > >

    >

  • Profile
    정우석 2000.06.14 18:46
    답변 감사드리며 다시 질문드리겠습니다...



    제 경우를 자세히 말씀드리면 상황에 따라 DS를 쓸때 DBNAME을 다르게 설정해줘야 합니다.

    if 조건 then

    qr_1.DataBaseName := 'db_src'

    else

    qr_1.DataBaseName := 'db_trg';



    이런 식이죠..



    근데 DS와 DB가 한 DM 안에 있다면 잘 작동됩니다.



    근데 DM_2에서 DM_1에 있는 db_src, db_trg를 참고하려고(DM_2에는 DB가 없습니다.)

    위의 코드를 쓰면 alias db_src를 찾을 수 없다는 메시지가 나오더군요..



    DM_2에도 DB를 만들면 되는데 이렇게 되면

    DM을 만들 때마다 너무 중복된 DB가 많이 생기는 것같구..



    이렇게 처리하지 않고 깔끔하게 하는 방법이 있을 것같아서 질문드립니다.

    ( 만약 위에서 DS의 DBNAME에 그냥 BDE Alias만 쓴다면 Login Prompt가 뜹니다. )