질문의 요지는 에디트 박스에서 날짜를 입력받아 (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 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;
여기에서 질문요 첫번째 날짜를 기준으로 값을 조회하여 price값을 누적시켰는데
같은날의 다음레코드의 값을 어떻게 누적시키는지.......
For
end;
end;
FROM Main A, Sujin B
WHERE A.MM_DATE BETWEEN 날자1 AND 날자2
AND A.MM_CODE = B.MM_MAINCODE
SQL문만 작성해도 값을 구 할수 있습니다.
그리고 테이블 sujin에서 MS_MAINCODE 필드 값이 중복된 값이 있는데
이러면 PRICE 필드값 하나만 가져 올수 없습니다.
MS_MAINCODE 값 외 또 비교할 수 있는 필드가 있어야 할 꺼 같은데...
아니면 이 테이블 자체가 원하는게 그런것인지.. 흠...
main테이블과 sujin 테이블은 1대 다의 연관성을 가지고 있는네요
예제로 주신 테이블은...