Q&A

  • 두개의 테이블을 조인후결과를 제3의 테이블로 저장하기(급)
상품을 검색후 디비그리드에 추력할때

상품마스터의 거래선코드와 거래선마스타의 거래선코드값을 조인하여,

거래처명과 상품코드 상품명을 디비그리드에 출력하려고 합니다.

adoquery를 사용하고 있는데. 조인문을 지원하지 않는다는 합니다.

또 검색된 내용을 제3의 테이블에 저장하는 방법은 없나요..

저장된 내용으로 리포트를 출력하여 합니다.

고수님들의 조언 부탁드립니다.

2  COMMENTS
  • Profile
    BLUE 2001.08.08 01:57
    임형완 wrote:

    > 상품을 검색후 디비그리드에 추력할때

    > 상품마스터의 거래선코드와 거래선마스타의 거래선코드값을 조인하여,

    > 거래처명과 상품코드 상품명을 디비그리드에 출력하려고 합니다.

    > adoquery를 사용하고 있는데. 조인문을 지원하지 않는다는 합니다.

    > 또 검색된 내용을 제3의 테이블에 저장하는 방법은 없나요..

    > 저장된 내용으로 리포트를 출력하여 합니다.

    > 고수님들의 조언 부탁드립니다.



    일단 조회 후 디비그리드에 뿌리는 작업은 하시리라 믿습니다.

    그리고 전 디비그리드를 잘 쓰지 않아서...

    adoquery도 써본적이 없죠..(진짜 이건 몰까??)



    디비그리드는 전체 디비를 읽어서 table로 연결한 후 쭉 뿌릴경우는

    속도및 사용법이 편리하지만 여러가지로 불편한점이 많다고 생각합니다.

    그래서 예전에 저희 회사에서는 스트링그리드를 많이 사용하였지요.



    일단 조회한 후에는 임시 테이블을 만드십시요.

    파라독스 테이블이 편할 듯 합니다.



    소스입니다..

    {== 출력물 임시 테이블 생성 ==}

    if FileExists('c:temp_table.db') then

    begin

    table1.Active := false;

    table1.DatabaseName := 'C:';

    table1.TableName := 'temp_table';

    table1.TableType := ttParadox;

    table1.DeleteTable;

    end;



    {== 임시 테이블 False 만들기. ==}

    table1.Active := False;

    table1.DatabaseName := 'C:';

    table1.TableName := 'temp_busu';

    table1.TableType := ttParadox;

    table1.FieldDefs.Clear;



    {== 컬럼수 만큼 필드 만들기 ==}

    {== SG1 : 조회한 스트링그리드 ==}

    {== 20 : 임시테이블 필드 크기 ==}

    for i := 0 to SG1.ColCount - 2 do

    table1.FieldDefs.Add('field' + inttostr(i), ftString, 20, false);

    table1.CreateTable;

    table1.Active := true;



    {== 만들어진 테이블 필드에 자료 넣기 ==}

    {== 그리드를 끝까지 돌면서 임시테이블에 넣기 ==}

    for i := 1 to sg1.RowCount - 1 do

    begin

    if sg1.Cells[1,1] = '' then Break;

    table1.Append;

    for j := 0 to sg1.ColCount - 2 do

    table1.FieldByName('field' + IntToStr(j)).asstring := sg1.Cells[j,i];

    table1.Post;

    end;



    {== 출력 폼에 집어 넣기 ==}

    with Frm_Busu_R do

    begin

    QRDBText1.DataField := 'field0';

    QRDBText2.DataField := 'field1';

    QRDBText3.DataField := 'field2';

    QRDBText4.DataField := 'field3';

    QRL_Name.Caption := Panel10.Caption; //본부/부서명칭

    QRL_Date.Caption := Copy(MaskEdit1.Text,1,4) + '/'

    + Copy(MaskEdit1.Text,5,2) + '/'

    + Copy(MaskEdit1.Text,7,2) ;

    QRL_Count.Caption := Panel12.Caption; //총 인원 수

    QRL_Sum.Caption := Panel13.Caption + '원'; //총 액

    QuickRep1.Preview;

    end;



    답변이 됐는지 모르겠네요...

    그럼 이만/////////////





  • Profile
    MAJOR 2001.08.06 20:26
    임형완 wrote:

    > 상품을 검색후 디비그리드에 추력할때

    > 상품마스터의 거래선코드와 거래선마스타의 거래선코드값을 조인하여,

    > 거래처명과 상품코드 상품명을 디비그리드에 출력하려고 합니다.

    > adoquery를 사용하고 있는데. 조인문을 지원하지 않는다는 합니다.

    > 또 검색된 내용을 제3의 테이블에 저장하는 방법은 없나요..

    > 저장된 내용으로 리포트를 출력하여 합니다.

    > 고수님들의 조언 부탁드립니다.



    ====

    안녕하세여..

    그런 문제라면 제가 보기에는 파라독스로 다운을 받아서 리포트로 출력을 하는 게 좋을 것 같네여...

    뭐 필드 만들어주고 나중에 관리하기는 복잡하지만 그래도 제가 보기에는 만만한(?) 파라독스를 사용하는 게 좋을 것 같네여..

    만드는 법이나 결과를 옮기는 것은 TableCreate나 BatchMove혹은 바로 For나 While로 루프를 돌려서 사용을 하시면 될 것 같네여..

    좀 더 편한 방법이 있는 지는 모르겠지만 제가 아직 실력이 모자라서리..

    더 좋은 방법을 아시게 되면 올려주세요..

    나중에 저두 참고로 사용하게요..

    그럼 즐프하세여..