Q&A

  • Query 상에서 join 하는 방법과, update 하는 방법 좀...
3가지나 물어보네요,...

좀 급해요..

아래에 대한 상황에 대해서좀 가르쳐주시겠어요...





1. 아래의 예제 처럼.. 델파이상에서도 넣을 수가 있나요?

있으면 하는 방법 좀 가르쳐 주세요..

잘 안되서 그럽니다.

Update Temp.db b Set Name1 = (Select Index2 From PartDB.db a where a.index1 = b.Machine)



2. 그리고 DBGird에 내용이 안 나타납니다..

이 방법좀 알려 주세요..



3. 그리고 널인것을 검색할때는 어떻게 해야 하나요..

이것도 가르쳐 주시겠어요...

(* SQL문장으로는 구현을 하겠는데... 델파이상에서는 잘 못 하겠습니다.)





2  COMMENTS
  • Profile
    김지엽 2001.02.15 04:22
    1. 아래의 예제 처럼.. 델파이상에서도 넣을 수가 있나요?

    있으면 하는 방법 좀 가르쳐 주세요..

    잘 안되서 그럽니다.

    Update Temp.db b Set Name1 = (Select Index2 From PartDB.db a where a.index1 = b.Machine)





    제가 이해를 잘 못한 것일까요?

    왜 b에 foriegn key를 제공해주는 a의 필드 값을 b의 다른 필드값으로 세팅해줘야 하는건지? 이런 경우에는 일단 TQuery를 두개 사용하는게 좋지 않을까요..? 첫번째는 View를 제공하는 쿼리..

    Query1 ->

    select * From a,b

    where a.index1 = b.machine

    요렇게 넣어주고요..

    두번째 쿼리는

    Query2 ->

    Update b

    set Name1 = :p1

    where b.키 = :p2



    그런 담에 필요한 시점에서

    Query2.ParambyName('p2').As... := Query1.Fieldbyname('키').As...;

    Query2.ParambyName('p1').As... := Query1.FieldByName('Index2').As...;

    Query2.ExecSQL;

    요렇게 해주면 되지 않을까요?

    ---------------------------------------------

    > 2. 그리고 DBGird에 내용이 안 나타납니다..

    > 이 방법좀 알려 주세요..



    -> 어떤 내용이 안 나타나는지 모르겠네요?



    ------------------------------------------------

    > 3. 그리고 널인것을 검색할때는 어떻게 해야 하나요..

    > 이것도 가르쳐 주시겠어요...

    > (* SQL문장으로는 구현을 하겠는데... 델파이상에서는 잘 못 하겠습니다.)

    >

    스트링의 경우에는 if Dataset.Field.AsString = ''로 검색하면 되더군요. 저도 왜 그런지는 모르겠지만 나머지 데이터형은 nil이나 null따위 예약어로 비교해주면 될 거 같은데 안되더라구요.. 그래서 전 좀 불편하더라도 꼭 문자값 필드로 검색을 합니다만..

    이거 아시는 다른 분들 계시면 저도 좀 가르쳐주시면 좋겠네요..

  • Profile
    미니 2001.02.15 20:52
    열심히 작업을 하고는 있지만 잘 되지 않네요...



    제가 작성한 문장은 이러합니다.. 혹 틀린게 있음 가르쳐 주세요..



    Query1.Close;

    Query2.Close;



    Query1.SQL.Add(' Update "Temp.db" Set ');

    Query1.SQL.Add(' Week = (Select :Week From "PartDB.db" ');

    Query1.SQL.Add(' Where Machine = :Index1 ');



    Query1.ParamByName('Week').AsString := Query2.Fieldbyname('Index2').AsString;

    Query1.ParamByName('Index1').AsString := Query2.Fieldbyname('Index1').AsString;



    Query2.Open;

    Query1.ExecSQL;