Q&A

  • 조인테이블의 누적값 산출방법을 알고싶습니다.....
질문의 요지는 에디트 박스에서 날짜를 입력받아 (20040101)~(20040531) Main테이블의 MM_Date 날짜를 비교후 같으면 메인테이블의 MM_code값과 수진테이블의 Ms_MainCode값을비교하여 같으면  price필드값을 누적시키는 구현입니다. (인터베이스 사용)

즉 메인테이블의 날짜는 같은날이 여러개가 존재하고 수진테이블에는 날짜 필드가 없지만 MM_code필드와 Ms_MainCode값과 같습니다.

델파이 초보자 입니다.
===================================================
Main(테이블)                                             Sujin(테이블)
MM_Code(필드) MM_ Date(필드)             MS_MainCode(필드)           price(필드)              
00000001            20040415                       00000001                              462000
00000002            20040415                       00000002                              550000
00000003            20040415                       00000003                              458000
00000001            20040416                       00000001                              50000
00000002            20040416                       00000002                              45000
===================================================
procedure TFormSuBol.BtnViewClick(Sender: TObject);
var
MainByun, SuJinByun, Date1, Date2 :String;
SuJinTotal:Integer;

begin
  Date1:= (Edt_Date.Text) + (Edt_SuJinDate1.Text); //년도,월,일
  Date2:= (Edt_Date.Text) + (Edt_SuJinDate2.Text);//년도,월,일
   with DataModule1.Qry_Me_SuJin do begin
     close;
     Sql.Clear;
     Sql.Add('Select A.MM_Code, A.MM_Date, B.MS_MainCode, B.price                ' );
     sql.Add(' From Me_Main A,  Sujin B       ');
     sql.Add(' Where A.MM_code = B.MS_MainCode ' =  +quotedStr(Date1 )); <=요기서 에러
     open;                                                                                  
       if Eof then Begin
         ShowMessage('등록된 자료가 없습니다');
         Edt_SuJinDate1.SetFocus;
         Edt_SuJinDate1.SelStart:= 0;
         Edt_SuJinDate1.SelLength:= Length(Edt_SuJinDate1.Text);
         exit;
       end;

     MainByun:= FieldByName('MM_Code').AsString;
     SuJinByun:= FieldByName('Ms_MainCode').AsString;
여기에서 질문요 날짜를 기준으로 값을 조회하여 윗줄에 있는 MM_Code값을 가져왔는데 어떻게 그다음 레코드 값을 가져와 누적시키는지 갈켜주심 감사하겠습니다. 이틀째 엄청헤메고 있습니다.
     For


    
   end;
end;
2  COMMENTS
  • Profile
    김진용 2004.04.17 20:05
    SQL 문이 잘못된것 같네요..

      with DataModule1.Qry_Me_SuJin do begin
           close;
           Sql.Clear;                                    
           Sql.Add('SELECT   A.MM_CODE ,                     ');
           Sql.Add('         A.MM_DATE ,                     ');
           Sql.Add('         B.MS_MAINCODE,                  ');
           Sql.Add('         SUM(B.PRICE)                    ');
           sql.Add('FROM     ME_MAIN A,                      ');
           sql.Add('         SUJIN   B                       ');
           sql.Add('WHERE    A.MM_DATE      >= :MM_DATE1     ');
           sql.Add('AND      A.MM_DATE      <= :MM_DATE2     ');
           sql.Add('AND      A.MM_CODE       =  B.MS_MAINCODE');
           sql.Add('GROUP BY A.MM_CODE,                      ');
           sql.Add('         A.MM_DATE,                      ');
           sql.Add('         B.MS_MAINCODE                   ');
          
           ParamByName('MM_DATE1').AsString :=  Date1;
           ParamByName('MM_DATE2').AsString :=  Date2;
           open;
           IF  RecordCount = 0 Then  Begin
               ShowMessage('등록된 자료가 없습니다');
               Edt_SuJinDate1.SetFocus;
               Edt_SuJinDate1.SelStart:= 0;
               Edt_SuJinDate1.SelLength:= Length(Edt_SuJinDate1.Text);
               exit;
           end;
      End;  



  • Profile
    너구리 2004.04.15 18:25
    다음으로 가는것은 DataModule1.Qry_Me_SuJin.NEXT 입니다.

    무엇이 질문인지 모르겠군요..