Q&A

  • query로 master/detail 구성시 마지막 data만 나오는 원인?
안녕하세요. 고수님의 도움을 요청합니다.

query1 과 query2 로 마스터/디테일를 구성하고 dbgrid에 멋지게 연결시켰는데

마지막 data 만 나오는 데 어떻게 해야 하나요.



query1 ==> select code,stage,a2,a3 from 출고 where stage = 1

query2 ==> select jcode,jpumnm,junit,tstage,ta2,ta3 from 코드 where jcode = :code



요렇게 query는 작성되었구요.

query1 ==> datasource1

query2 ==> datasource2 로 해놓고

query2.datasource := datasource1 으로 연결했었요.



그리고

query2에 있는 tstage,ta2,ta3 는 lookup 을 사용해서 query1의 data를

연결했었요. 멋지게 <== 요것두 초자라서 QNA 를 무진장 뒤졌슴.

그런데 간단하게 컴포넌트의 new field에서 간단히 선택만 하니까 되더라구요.

마자막으로

dbgrid에 datasource2를 연결해서

jcode,jpumnm,junit,tstage,ta2,ta3 를 연결하고



query1.active 를 true 를 했는데 반응이 없고

query2.active 를 true 를 했더니 자료가 1개만 보여지 겁니다.

그것도 마지막 data 만 나오는 겁니다.



어떻게 해야 data 가 모두 나올 수 있지요.

query1 만 돌리면 10 개 정도의 data 가 나와야 되거든요...



고수님의 각별한 보살핌이 있으시기를 간절히 이 초자는 바랍니다.





















2  COMMENTS
  • Profile
    김영대 2000.10.26 20:02
    안녕하세여..?

    컴맹입니다.



    콤포넌트 2개를 Master / Detail 로 사용 하셨군여..



    Query1 의 Result 가 10개 정도 였다구여..



    그런데 DbGrid의 DataSource 가 DataSource2즉 Query2의 값이 더군여..

    Master / Detail 은 Query1의 결과를 가지구 ...

    Query2가 한번더 쿼리를 하는것과 같지요..



    이걸 조인문으로 표현 하자면...



    > query1 ==> select code,stage,a2,a3 from 출고 where stage = 1

    > query2 ==> select jcode,jpumnm,junit,tstage,ta2,ta3 from 코드 where jcode = :code



    -->

    Select a.code,a.stage,a.a2,a.a3,b.jcode,b.jpumnm,b.junit... from 출고 a ,코드 b ==

    where a.stage =1 and a.code = b.jcode

    // 여기서 a,b는 Alias라는거 아시죠..?

    이렇게 표현이 되는거죠...

    그러니까 DbGrid의 내용에는 이쿼리의 결과셋(Result Set) 이 표현 되게 됩니다.

    그럼 즐코딩 되세여..







    저도초자 wrote:

    > 안녕하세요. 고수님의 도움을 요청합니다.

    > query1 과 query2 로 마스터/디테일를 구성하고 dbgrid에 멋지게 연결시켰는데

    > 마지막 data 만 나오는 데 어떻게 해야 하나요.

    >

    > query1 ==> select code,stage,a2,a3 from 출고 where stage = 1

    > query2 ==> select jcode,jpumnm,junit,tstage,ta2,ta3 from 코드 where jcode = :code

    >

    > 요렇게 query는 작성되었구요.

    > query1 ==> datasource1

    > query2 ==> datasource2 로 해놓고

    > query2.datasource := datasource1 으로 연결했었요.

    >

    > 그리고

    > query2에 있는 tstage,ta2,ta3 는 lookup 을 사용해서 query1의 data를

    > 연결했었요. 멋지게 <== 요것두 초자라서 QNA 를 무진장 뒤졌슴.

    > 그런데 간단하게 컴포넌트의 new field에서 간단히 선택만 하니까 되더라구요.

    > 마자막으로

    > dbgrid에 datasource2를 연결해서

    > jcode,jpumnm,junit,tstage,ta2,ta3 를 연결하고

    >

    > query1.active 를 true 를 했는데 반응이 없고

    > query2.active 를 true 를 했더니 자료가 1개만 보여지 겁니다.

    > 그것도 마지막 data 만 나오는 겁니다.

    >

    > 어떻게 해야 data 가 모두 나올 수 있지요.

    > query1 만 돌리면 10 개 정도의 data 가 나와야 되거든요...

    >

    > 고수님의 각별한 보살핌이 있으시기를 간절히 이 초자는 바랍니다.

    >

    >

    >

    >

    >

    >

    >

    >

    >

    >

  • Profile
    저도초자 2000.10.27 05:01
    김영대님 먼저 답변에 감사 드립니다.

    그러나, 제가 문제를 아직 해결하지 못해서 다시 질문을 드립니다.



    제가 query 분을 2개 사용했던 이유는

    query1에 사용했던 "출고" 라는 table 은 database1 에 구성되어 있고,

    query2에 사용했던 "코드" 라는 table 은 database2 에 구성되어 있거든요.

    그래서 두개의 table를 조인하기가 어려워 부득불 query 를 두개 작성하게 되었습니다.



    좀 더 설명드리면,

    database1 에는 입고,출고,재고 와 같은 table 이 있고,

    database2 에는 코드,bom,부서 등과 같은 table 이 있거든요.

    물론 두개의 database 안에 있는 각각의 table 은 code나 부서 와 같은 필드로 key가

    서로 연결될 수 있도록 되어 있구요.



    문제는 query 컴포넌트에는 한개의 database 만 연결할 수 있도록 되어있어

    join 하기가 어려웠습니다. 흐흐흐 3일째 고생..



    query 컴포넌트에서 database 를 연결하지 않고 form 이 create 될 때

    select a.code,b.pumnm,b.junit,a.stage,a.a2,a.a3 from :DB1:출고 a,

    :DB2:코드 b where a.stage = 1 and a.code = b.code



    요렇게 하는 방식도 해보았는데 database violation error 가 발생되더군요.



    참고로 저의 pc 환경은 DB 가 리눗스 서버에 mysql 로 되어있고,

    제 pc 는 Windows me 환경에 ODBC로 mysql를 연동시키고 있거든요.



    아뭏튼 그래서 결국

    두번째 방식으로 넘어 갔답니다.

    어제 올린 query 문을



    query1 ==> select jpumnm,junit,code,stage,a2,a3 from 출고 where stage = 1

    query2 ==> select jcode,jpumnm,junit from 코드 where jcode = :code



    이렇게 작성해서 query1 에 lookup 을 jpumnm 과 junit 작성했더니

    data 는 10개가 나오더라구요.

    그런데 이제는 연결은 되었는데 jpumnm,junit 이 10개가 모두 나오는 것이

    아니라 한개나 두개가 나오든가 아니면 아예 안나오거든요.

    또 picklist 기능이 작동되는 것 같거든요.

    실행시 grid 를 누르면 combobox 가 나오고 그안에 jpumnm 또는 junit 이

    하나씩 들어가 있더라구요. 저는 이런기능을 원치 않거든요.

    바로 grid 에 display 될 수 없나요.????



    정리하면 첫번째 방식에서 두개의 database 에 있는 각각의 table 를 join 할 수 있는

    query 문을 작성하는 방법이나,

    두번째 방식에서 lookup 된 필드가 DBgrid 에서 combobox 형태가 되지 않고

    query 가 open 되면 바로 화면에 보이도록 하는 방법좀 알려주시면



    "저도초자" 엎드려 감사 드리겠습니다.





    김영대 wrote:

    > 안녕하세여..?

    > 컴맹입니다.

    >

    > 콤포넌트 2개를 Master / Detail 로 사용 하셨군여..

    >

    > Query1 의 Result 가 10개 정도 였다구여..

    >

    > 그런데 DbGrid의 DataSource 가 DataSource2즉 Query2의 값이 더군여..

    > Master / Detail 은 Query1의 결과를 가지구 ...

    > Query2가 한번더 쿼리를 하는것과 같지요..

    >

    > 이걸 조인문으로 표현 하자면...

    >

    > > query1 ==> select code,stage,a2,a3 from 출고 where stage = 1

    > > query2 ==> select jcode,jpumnm,junit,tstage,ta2,ta3 from 코드 where jcode = :code

    >

    > -->

    > Select a.code,a.stage,a.a2,a.a3,b.jcode,b.jpumnm,b.junit... from 출고 a ,코드 b ==

    > where a.stage =1 and a.code = b.jcode

    > // 여기서 a,b는 Alias라는거 아시죠..?

    > 이렇게 표현이 되는거죠...

    > 그러니까 DbGrid의 내용에는 이쿼리의 결과셋(Result Set) 이 표현 되게 됩니다.

    > 그럼 즐코딩 되세여..

    >