질문의 요지는 에디트 박스에서 날짜를 입력받아 (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;
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;