Q&A

  • Query로 만든 DBGrid에서의 등록, 수정, 삭제에 관하여...
안녕하세요. 고수님

이 곳에 글을 올린지 몇일이 지났건만 아직 저에 대한 답변이 없어 이렇게 다시 글을

올리게 되었습니다. 다시 한번 이글을 봐주시고 이에 대한 답변을 주셨으면 합니다.



전 Delphi5/Interbase6을 사용하고 있으며 제 고민은 다음과 같습니다.



Query를 이용한 Data를 DBGrid로 보여주고 이 보여진 자료를 사용자가 임의적으로

등록, 수정, 삭제가 가능하도록 하고 싶습니다.

Table을 이용할때에는 이것이 쉽게 되지만 제가 굳이 Query를 이용하게 된 이유는

다음과 같습니다.



첫째, 자료의 양이 많아 Query로 자료를 1차 추출하고 추출된 자료를 기준으로 새

자료를 등록, 수정, 삭제가 되도록 하고 싶습니다.

둘째, 자료의 각 레코드 필드별로 다른 테이블과 연결하여 그 연결된 자료 또한 위

와 같이 등록, 수정, 삭제가 되옥록 하고 싶습니다.

셋째, 많은 양의 자료가 계속적으로 늘어남에 따라 데이타의 중복 입력과 신속한

입력 처리를 위해 DBGrid를 이용하려 합니다.



물론 위의 이유만은 아니지만 우선 중요한 몇가지만을 적어 보았습니다.

제가 예전에 보아온것 중에 다소 특이한 DBGrid를 본적이 있는데 DBGrid내의 특정

필드가 LookupComboBox와 같이 나타나는 경우가 있더군요.

현재의 Delphi5의 DBGrid로 이 형태도 가능한지요. 그리고 위의 기술된 내용을

기준으로 혹시 Query가 아닌 Table로도 가능하다면 그 방법을 가르쳐 주시면 감사

하겠습니다.

많은 고수님들의 여러 답변을 부탁드립니다.



참고) 전 Form상에 DBGrid만을 가져다 놓고 작업을 할 생각이지요.

4  COMMENTS
  • Profile
    몰러 2001.01.29 18:37
    쿼리를 기반으로한 데이타셋을 수정하려면 updateoject를 설정해 주어야 합니다.

    즉 TUpdateSQL/TibUpdateSQL을 쿼리데이타셋의 UpdateObject에 설정해 주어야 합니다.

    (물론 Update관련 SQL도 모두 지정되어야 하고요)



    궁금점으로 인한 정신적 고통 wrote:

    > 안녕하세요. 고수님

    > 이 곳에 글을 올린지 몇일이 지났건만 아직 저에 대한 답변이 없어 이렇게 다시 글을

    > 올리게 되었습니다. 다시 한번 이글을 봐주시고 이에 대한 답변을 주셨으면 합니다.

    >

    > 전 Delphi5/Interbase6을 사용하고 있으며 제 고민은 다음과 같습니다.

    >

    > Query를 이용한 Data를 DBGrid로 보여주고 이 보여진 자료를 사용자가 임의적으로

    > 등록, 수정, 삭제가 가능하도록 하고 싶습니다.

    > Table을 이용할때에는 이것이 쉽게 되지만 제가 굳이 Query를 이용하게 된 이유는

    > 다음과 같습니다.

    >

    > 첫째, 자료의 양이 많아 Query로 자료를 1차 추출하고 추출된 자료를 기준으로 새

    > 자료를 등록, 수정, 삭제가 되도록 하고 싶습니다.

    > 둘째, 자료의 각 레코드 필드별로 다른 테이블과 연결하여 그 연결된 자료 또한 위

    > 와 같이 등록, 수정, 삭제가 되옥록 하고 싶습니다.

    > 셋째, 많은 양의 자료가 계속적으로 늘어남에 따라 데이타의 중복 입력과 신속한

    > 입력 처리를 위해 DBGrid를 이용하려 합니다.

    >

    > 물론 위의 이유만은 아니지만 우선 중요한 몇가지만을 적어 보았습니다.

    > 제가 예전에 보아온것 중에 다소 특이한 DBGrid를 본적이 있는데 DBGrid내의 특정

    > 필드가 LookupComboBox와 같이 나타나는 경우가 있더군요.

    > 현재의 Delphi5의 DBGrid로 이 형태도 가능한지요. 그리고 위의 기술된 내용을

    > 기준으로 혹시 Query가 아닌 Table로도 가능하다면 그 방법을 가르쳐 주시면 감사

    > 하겠습니다.

    > 많은 고수님들의 여러 답변을 부탁드립니다.

    >

    > 참고) 전 Form상에 DBGrid만을 가져다 놓고 작업을 할 생각이지요.

  • Profile
    김재억 2001.01.29 18:36
    VIEW 테이블을 사용해보심이 어떨까 하는 생각이 듭니다.



    VIEW를 만들어서 사용하시면 TABLE컴포넌트건 QUERY컴포넌트건 활용이 가능하지 않을까 생각이 드는데요..



    VIEW역시 일반 테이블과 마찬가지로 Master/Detail과 같은 형태로도 사용이 가능하니깐 어느정도 가능하지 않을까 하는 추측이 듭니다.



    물론 Interbase6에서 지원을 하지 않는다면 어쩔수없겠지만 말입니다.



    그리고 DBGrid에서도 Lookup Combo같은 표현이 가능합니다.

    그러기 위해서는 Table/Query 컴포넌트에서 표현할 필드를 Lookup필드로 만들어주면 됩니다.



    궁금점으로 인한 정신적 고통 wrote:

    > 안녕하세요. 고수님

    > 이 곳에 글을 올린지 몇일이 지났건만 아직 저에 대한 답변이 없어 이렇게 다시 글을

    > 올리게 되었습니다. 다시 한번 이글을 봐주시고 이에 대한 답변을 주셨으면 합니다.

    >

    > 전 Delphi5/Interbase6을 사용하고 있으며 제 고민은 다음과 같습니다.

    >

    > Query를 이용한 Data를 DBGrid로 보여주고 이 보여진 자료를 사용자가 임의적으로

    > 등록, 수정, 삭제가 가능하도록 하고 싶습니다.

    > Table을 이용할때에는 이것이 쉽게 되지만 제가 굳이 Query를 이용하게 된 이유는

    > 다음과 같습니다.

    >

    > 첫째, 자료의 양이 많아 Query로 자료를 1차 추출하고 추출된 자료를 기준으로 새

    > 자료를 등록, 수정, 삭제가 되도록 하고 싶습니다.

    > 둘째, 자료의 각 레코드 필드별로 다른 테이블과 연결하여 그 연결된 자료 또한 위

    > 와 같이 등록, 수정, 삭제가 되옥록 하고 싶습니다.

    > 셋째, 많은 양의 자료가 계속적으로 늘어남에 따라 데이타의 중복 입력과 신속한

    > 입력 처리를 위해 DBGrid를 이용하려 합니다.

    >

    > 물론 위의 이유만은 아니지만 우선 중요한 몇가지만을 적어 보았습니다.

    > 제가 예전에 보아온것 중에 다소 특이한 DBGrid를 본적이 있는데 DBGrid내의 특정

    > 필드가 LookupComboBox와 같이 나타나는 경우가 있더군요.

    > 현재의 Delphi5의 DBGrid로 이 형태도 가능한지요. 그리고 위의 기술된 내용을

    > 기준으로 혹시 Query가 아닌 Table로도 가능하다면 그 방법을 가르쳐 주시면 감사

    > 하겠습니다.

    > 많은 고수님들의 여러 답변을 부탁드립니다.

    >

    > 참고) 전 Form상에 DBGrid만을 가져다 놓고 작업을 할 생각이지요.

  • Profile
    궁금점 2001.01.30 02:39
    답변 감사드립니다.

    그런데 VIEW 데이블이란게 뭔지 첨듣는 말이군요.

    좀더 자세히 설명해 주시면 감사 하겠습니다.



    김재억 wrote:

    > VIEW 테이블을 사용해보심이 어떨까 하는 생각이 듭니다.

    > VIEW를 만들어서 사용하시면 TABLE컴포넌트건 QUERY컴포넌트건 활용이 가능하지 않을까 생각이 드는데요..

    > VIEW역시 일반 테이블과 마찬가지로 Master/Detail과 같은 형태로도 사용이 가능하니깐 어느정도 가능하지 않을까 하는 추측이 듭니다.

    > 물론 Interbase6에서 지원을 하지 않는다면 어쩔수없겠지만 말입니다.

    > 그리고 DBGrid에서도 Lookup Combo같은 표현이 가능합니다.

    > 그러기 위해서는 Table/Query 컴포넌트에서 표현할 필드를 Lookup필드로 만들어주면 됩니다.

    >

    > 궁금점으로 인한 정신적 고통 wrote:

    > > 안녕하세요. 고수님

    > > 이 곳에 글을 올린지 몇일이 지났건만 아직 저에 대한 답변이 없어 이렇게 다시 글을

    > > 올리게 되었습니다. 다시 한번 이글을 봐주시고 이에 대한 답변을 주셨으면 합니다.

    > >

    > > 전 Delphi5/Interbase6을 사용하고 있으며 제 고민은 다음과 같습니다.

    > >

    > > Query를 이용한 Data를 DBGrid로 보여주고 이 보여진 자료를 사용자가 임의적으로

    > > 등록, 수정, 삭제가 가능하도록 하고 싶습니다.

    > > Table을 이용할때에는 이것이 쉽게 되지만 제가 굳이 Query를 이용하게 된 이유는

    > > 다음과 같습니다.

    > >

    > > 첫째, 자료의 양이 많아 Query로 자료를 1차 추출하고 추출된 자료를 기준으로 새

    > > 자료를 등록, 수정, 삭제가 되도록 하고 싶습니다.

    > > 둘째, 자료의 각 레코드 필드별로 다른 테이블과 연결하여 그 연결된 자료 또한 위

    > > 와 같이 등록, 수정, 삭제가 되옥록 하고 싶습니다.

    > > 셋째, 많은 양의 자료가 계속적으로 늘어남에 따라 데이타의 중복 입력과 신속한

    > > 입력 처리를 위해 DBGrid를 이용하려 합니다.

    > >

    > > 물론 위의 이유만은 아니지만 우선 중요한 몇가지만을 적어 보았습니다.

    > > 제가 예전에 보아온것 중에 다소 특이한 DBGrid를 본적이 있는데 DBGrid내의 특정

    > > 필드가 LookupComboBox와 같이 나타나는 경우가 있더군요.

    > > 현재의 Delphi5의 DBGrid로 이 형태도 가능한지요. 그리고 위의 기술된 내용을

    > > 기준으로 혹시 Query가 아닌 Table로도 가능하다면 그 방법을 가르쳐 주시면 감사

    > > 하겠습니다.

    > > 많은 고수님들의 여러 답변을 부탁드립니다.

    > >

    > > 참고) 전 Form상에 DBGrid만을 가져다 놓고 작업을 할 생각이지요.

  • Profile
    김재억 2001.01.30 19:30
    VIEW테이블이란 한마디로 물리적으로 DB에 정의된 테이블이 아니라 논리적으로 DB에 정의된 테이블이라고 생각하시면 이해가 빠르실겁니다.



    Create View 형태로 선언을 해주구요...

    테이블생성문은 내부 필드들을... Code Char(4), Num Date 등과 같은 형태로 정의하잖아요?

    그런데 View는 Select 문으로 실제 테이블들을 재정의한 형태로 만듭니다.

    예를 들어서...



    A테이블 B테이블

    aa char(4) a1 char(5)

    bb char(3) a2 char(3)



    과 같은 형태의 테이블이 있다면 뷰를 생성할때 Select문장으로..

    Create View TeView 어쩌구 저쩌구...

    Select A.bb, B.A2 from A, B where A.aa = B.a1



    이라고 만들었다면... TeView라는 뷰의 필드는 bb와 a2 가 되는 것입니다.

    물론 TeView에 직접 데이타의 추가가 가능하구요...

    근데.. 이걸 Interbase6에서 지원하는지 기억이 안나네요..

    가물가물 거립니다.

    제가 지금 테스트할 수 있는 환경이 아니라서 더 확실하게 말씀드릴수 없음을 사과드립니다.

    수고하십시오.



    궁금점 wrote:

    > 답변 감사드립니다.

    > 그런데 VIEW 데이블이란게 뭔지 첨듣는 말이군요.

    > 좀더 자세히 설명해 주시면 감사 하겠습니다.

    >

    > 김재억 wrote:

    > > VIEW 테이블을 사용해보심이 어떨까 하는 생각이 듭니다.

    > > VIEW를 만들어서 사용하시면 TABLE컴포넌트건 QUERY컴포넌트건 활용이 가능하지 않을까 생각이 드는데요..

    > > VIEW역시 일반 테이블과 마찬가지로 Master/Detail과 같은 형태로도 사용이 가능하니깐 어느정도 가능하지 않을까 하는 추측이 듭니다.

    > > 물론 Interbase6에서 지원을 하지 않는다면 어쩔수없겠지만 말입니다.

    > > 그리고 DBGrid에서도 Lookup Combo같은 표현이 가능합니다.

    > > 그러기 위해서는 Table/Query 컴포넌트에서 표현할 필드를 Lookup필드로 만들어주면 됩니다.

    > >

    > > 궁금점으로 인한 정신적 고통 wrote:

    > > > 안녕하세요. 고수님

    > > > 이 곳에 글을 올린지 몇일이 지났건만 아직 저에 대한 답변이 없어 이렇게 다시 글을

    > > > 올리게 되었습니다. 다시 한번 이글을 봐주시고 이에 대한 답변을 주셨으면 합니다.

    > > >

    > > > 전 Delphi5/Interbase6을 사용하고 있으며 제 고민은 다음과 같습니다.

    > > >

    > > > Query를 이용한 Data를 DBGrid로 보여주고 이 보여진 자료를 사용자가 임의적으로

    > > > 등록, 수정, 삭제가 가능하도록 하고 싶습니다.

    > > > Table을 이용할때에는 이것이 쉽게 되지만 제가 굳이 Query를 이용하게 된 이유는

    > > > 다음과 같습니다.

    > > >

    > > > 첫째, 자료의 양이 많아 Query로 자료를 1차 추출하고 추출된 자료를 기준으로 새

    > > > 자료를 등록, 수정, 삭제가 되도록 하고 싶습니다.

    > > > 둘째, 자료의 각 레코드 필드별로 다른 테이블과 연결하여 그 연결된 자료 또한 위

    > > > 와 같이 등록, 수정, 삭제가 되옥록 하고 싶습니다.

    > > > 셋째, 많은 양의 자료가 계속적으로 늘어남에 따라 데이타의 중복 입력과 신속한

    > > > 입력 처리를 위해 DBGrid를 이용하려 합니다.

    > > >

    > > > 물론 위의 이유만은 아니지만 우선 중요한 몇가지만을 적어 보았습니다.

    > > > 제가 예전에 보아온것 중에 다소 특이한 DBGrid를 본적이 있는데 DBGrid내의 특정

    > > > 필드가 LookupComboBox와 같이 나타나는 경우가 있더군요.

    > > > 현재의 Delphi5의 DBGrid로 이 형태도 가능한지요. 그리고 위의 기술된 내용을

    > > > 기준으로 혹시 Query가 아닌 Table로도 가능하다면 그 방법을 가르쳐 주시면 감사

    > > > 하겠습니다.

    > > > 많은 고수님들의 여러 답변을 부탁드립니다.

    > > >

    > > > 참고) 전 Form상에 DBGrid만을 가져다 놓고 작업을 할 생각이지요.