Q&A

  • 진짜루 울고 시포... 정말 왜이렇게 안돼는지엽 갈켜줘엽 지발
까마귀님의 충고대루 고쳤는디...동작을 안함당... 왜글죠 진짜루 울고 시포



참고로 전 지금 로컬디비인 파라독스를 사용하고 있습니당.....



출력 부분에 이상이 있나엽...



procedure TForm12.ListBox1Click(Sender: TObject);

begin

with form1.Query7,form6.Query6 do

begin

close;

sql.Clear;

sql.Add('select A.제품명,B.유발공정 from (검사명세 A left join 불량내역 B');

sql.Add('on A.제조번호 = B.제조번호)');

sql.Add('where A.제조번호="'+listbox1.items[listbox1.itemindex]+'"');

sql.add('and A.순번="'+edit1.text+'"');

open;

end;

if not form1.Query7.Eof and not form6.Query6.Eof then

begin

edit2.Text:=form1.Query7.fieldbyname('제품명').asstring;

edit3.Text:=form6.Query6.fieldbyname('유발공정').asstring;

end;

end;

end.

6  COMMENTS
  • Profile
    까마귀 2000.06.14 19:13
    사발우성 wrote:

    > 어제 까마귀님들이 도와주셨는디도 허접 사발이는 도저히 조인을 해결할수가 없어서 여러 고수님들께 이렇게 다시 도움을 청함당.....ㅠ.ㅠ

    >

    > 제가 할려구 하는 것은엽 음 테이블 3개를 조인 할려구 함당...ㅠ.ㅠ 그런디 영감이 안옴당..

    >

    > 음 그러니까엽 아래의 소스는 그중에서 2개만 조인 할려구 하다가 실패했구엽 제가 지금 하고픈것은엽 그런니까...

    >

    > 테이블1 테이블2 테이블3 이렇게 있슴당.......

    >

    > 테이블1 하구 테이블2의 공통점은 2개.... 아래의 순번과 제품번호임당...

    >

    > 글고 테이블2와 테이블3의 공통점은 불량코드임당.. ㅠ.ㅠ 고수님들 이제 어떻하면 조인을 할 수 있을 까엽 글구 조인후의 출력 문제에 대해서두 갈켜주심 성은이망극하겠습니당.... 이상 울보사발이었습니당...ㅠ.ㅠ

    >

    > procedure TForm12.ListBox1Click(Sender: TObject);

    > begin

    > with form1.Query7,form6.Query6 do

    > begin

    > close;

    > sql.Clear;

    > sql.Add('select A.제품명,B.유발공정 from 검사명세 A,불량내역 B');

    > sql.Add('where A.제조번호 = B.제조번호 and ,');

    > sql.Add('제조번호="'+listbox1.items[listbox1.itemindex]+'" and 순번="'+edit1.text+'"');

    > open;

    > end;

    > if not form1.Query7.Eof and not form6.Query6.Eof then

    > begin

    > edit2.Text:=form1.Query7.fieldbyname('제품명').asstring;

    > edit3.Text:=form6.Query6.fieldbyname('유발공정').asstring;

    > end;

    >

    > end;

    >

    > end.



    안녕하세요.

    까마귀입니다. 좋은 하루 되시길....



    아래는 제가 Table 3개를 조인할때 사용한 문장입니다.

    정상적으로 사용된 문장이니까 문제는 없을겁니다. 최적화는...글쎄요?



    With dm_Closing.q_Temp do

    begin

    Close;

    SQL.Clear;

    SQL.Add('Select M.Sano2, M.Gae, M.Ibdate, M.Gdate, M.Indate,');

    SQL.Add('M.Inname, M.Sinname, M.Soname, M.Chname, M.Gaedate, M.IgGubun,');

    SQL.Add('M.Gam, M.ZipCode, M.Jundate, M.GamVal, M.DaeVal, M.BuVal,');

    SQL.Add('M.MacVal, M.ExVal, M.MinVal, N.Nname, M.Nakdate, J.Jbyun ');

    SQL.Add('From (Main M LEFT JOIN Ncode N ');

    SQL.Add('On M.NakChal = N.CodeKey) LEFT JOIN Jbyun J ');

    SQL.Add('On M.Sano2 = J.Sano ');

    SQL.Add('Where Sano2 = ''' + dm_Closing.q_Sch['Sano2'] + '''');

    Prepare;

    Open;

    end;



    이걸 토대로 사발우성님의 JOIN QUERY를 해보면..

    어제 보니까 LEFT JOIN을 사용하시려는것 같던데..



    Close;

    SQL.Clear;

    SQL.Add('Select A.제품명, B.유발공정');

    SQL.Add('From (테이블1 A LEFT JOIN 테이블2 B');

    SQL.Add('On A.제조번호 = B.제조번호) LEFT JOIN 테이블3 C');

    SQL.Add('On B.불량코드 = C.불량코드');

    SQL.Add('Where A.제조번호= ''' + listbox1.items[listbox1.itemindex] + ''' and A.순번 = ''' + edit1.text + '''');

    Prepare;

    Open;



    이런식으로 하시면 될것 같네요.

    그리고, "' 와 '''는 차이가 있는거 아닌가요?

    저는 "' 이런식으로는 써보지 않아서 어떻게 될지 모르겠네요. 아무 문제없나?

    그리고, with form1.Query7,form6.Query6 do 이렇게 해도 되는 모양이지요?

    역시 이렇게 써보지 않아서...하하..

    참 위 문장을 보니 각 폼에 Query가 흩어져 있는 모양인데요.

    데이터 모듈을 써서 한 곳에 모아 놓는게 좋을것 같은데요.







    위대한 단군혼이 살아있는 나라.... 대한민국.

  • Profile
    까마귀 2000.06.14 19:40
    안녕하세요.

    까마귀입니다.



    잊어먹은게 있어서요.

    사발우성님의 소스에서는 테이블 1,2에서는 필요한 필드를 추출하는데요.

    3에서는 아무것도 빼내지 않더군요.

    그러면 3개를 조인할 필요가 없지 않나요?

    만약 필드 추출까지는 필요없어도, 레코드 추출시 테이블3에 있는 불량코드와 맞는게

    필요하다면 LEFT JOIN하면 않되거든요.

    그렇다면 테이블3 조인시는 INNER JOIN을 해야 합니다.

    출력문제는 데이터 모듈에다 Query나 DataSource등을 옮겨놓고 사용하면 별다른 문제없이 해결이 가능하리라고 보는데요.

    사발우성님처럼 각각의 폼에 있으면 그게 활성화가 되어 있는지 등등의 문제가 생길거라고 봅니다.







    위대한 단군혼이 살아있는 나라.... 대한민국.

  • Profile
    사발우성 2000.06.14 19:48
    음 데이터 모듈이란 모죠 전 무식해서리... 음 테이블들이 전부 따로 따로라서



    쿼리가 무려 14 개정도 됨당.... 캬캬캬 역쉬 초보당.... 만약에 음 그러니까엽...



    액세스처럼 1개의 디비확장자명을 갖게 할 수도 있나엽....^^



    글구엽 진짜루 넘 감솨 함당.... 참 저한테 SQL 책이나 델파이 책 추천하고픈게 있음



    팍팍좀 해주시와엽... -.- 책을 살려구 하는디 어떤책을 사야할까 고민 중이 거든엽...



    까마귀 wrote:

    > 안녕하세요.

    > 까마귀입니다.

    >

    > 잊어먹은게 있어서요.

    > 사발우성님의 소스에서는 테이블 1,2에서는 필요한 필드를 추출하는데요.

    > 3에서는 아무것도 빼내지 않더군요.

    > 그러면 3개를 조인할 필요가 없지 않나요?

    > 만약 필드 추출까지는 필요없어도, 레코드 추출시 테이블3에 있는 불량코드와 맞는게

    > 필요하다면 LEFT JOIN하면 않되거든요.

    > 그렇다면 테이블3 조인시는 INNER JOIN을 해야 합니다.

    > 출력문제는 데이터 모듈에다 Query나 DataSource등을 옮겨놓고 사용하면 별다른 문제없이 해결이 가능하리라고 보는데요.

    > 사발우성님처럼 각각의 폼에 있으면 그게 활성화가 되어 있는지 등등의 문제가 생길거라고 봅니다.

    >

    >

    >

    > 위대한 단군혼이 살아있는 나라.... 대한민국.

  • Profile
    까마귀 2000.06.14 20:03
    안녕하세요.

    까마귀입니다. 도움이 되신다니 기분 좋네요.하하...



    데이터 모듈이라는것은요, TQuery나 TTimer등등 프로그램 실행시 보이지 않는 콤포넌트를 모아두는 장소라고 보면 됩니다.

    이것도 역시 실행시는 보이지 않지요.

    File/New를 클릭하시면 New라는 탭에서 Data Module라고 적힌게 있을 겁니다.

    그걸 클릭해서 사용하시면 됩니다.

    여기에 놔둔 콤포넌트를 각 폼에서 사용하시려면 반드시 Use Unit을 등록하셔야 합니다.

    File/Use Unit을 클릭하시면 됩니다.



    책이라...

    저는 대림에서 나오고, 다우기술팀이 만든 'DELPHI4 시작, 그리고 완성'이라는 책이 좋던데요.

    그리고, 삼각형에서 나온 DELPHI CLIENT/SERVER라는 책도 좋고요. 이건 옛날 책이에요.

    저도 초보라서 어떤책이 좋더라고 하기는 좀 곤란하네요. 잘 몰라서리....

    모쪼록 도움이 되기를...







    위대한 단군혼이 살아있는 나라.... 대한민국.

  • Profile
    아리엘 2000.06.14 18:34
    냐.. 저도 초보에여.. 그냥 참고하시길..



    음 세개든 네개든 그냥 적어주면 될텐데여..

    그러니까 테이블이 A,B,C가 있다고 해요.



    select t1.*, t2,*, t3.* from A t1, B t2, C t3

    이렇게 하면 우선 A,B,C의 모든 테이블이 다 보이겠죠?

    조건을 줄때도 aa라는게 공통이랄때

    where t1.aa=t2.aa and t2.aa=t3.aa 이렇게 하면 그냥 될텐데..



    도움 되시길...

    이거 틀리면 고수님들 틀렸다고 말해줘여ㅣ.. 바로 지우게 ^^;

    허접이라 헤헤.

  • Profile
    사발우성 2000.06.14 18:51
    아리엘님 감솨 하쥐만 어떤식으로 해야 하는쥐 아직두 감 암옴당....



    걍 예제 주시와엽....^^



    글구 에디트 박스에 출력하는 것두 갈켜주심 진짜루 감솨하겠습니당....



    아리엘 wrote:

    > 냐.. 저도 초보에여.. 그냥 참고하시길..

    >

    > 음 세개든 네개든 그냥 적어주면 될텐데여..

    > 그러니까 테이블이 A,B,C가 있다고 해요.

    >

    > select t1.*, t2,*, t3.* from A t1, B t2, C t3

    > 이렇게 하면 우선 A,B,C의 모든 테이블이 다 보이겠죠?

    > 조건을 줄때도 aa라는게 공통이랄때

    > where t1.aa=t2.aa and t2.aa=t3.aa 이렇게 하면 그냥 될텐데..

    >

    > 도움 되시길...

    > 이거 틀리면 고수님들 틀렸다고 말해줘여ㅣ.. 바로 지우게 ^^;

    > 허접이라 헤헤.