답변 감사했습니다.
그러나, 그 문제가 아닌것 같습니다.. 지송.
아래 소스에서 뭐가 잘못된건지 모르겠습니다.
컴파일시에는 에러가 없으나 Active := True;
시에 에러가 발생합니다.
왜 그럴까여?
에러는 "매개변수개체를 잘못 정의했습니다. 제공된 정보가 일치하지 않거나 완전하지 않습니다" 라는 에러메세지 입니다.
디비는 Oracle 8i입니다,,,,,
아무리봐도 말 모르겠습니다. 도와 주십시요.
If TEdit(Sender).name = 'ed_project' Then
Begin
With ADOQuery1 do
Begin
Close;
SQL.Clear;
Sql.Add(' SELECT YES.YESAMOUNT YESAMOUNT FROM');
Sql.Add(' (SELECT SUM(AMOUNT) YESAMOUNT FROM YESANINFO');
Sql.Add(' WHERE COMPANY =:CODE0 ');
Sql.Add(' AND YY =:CODE1 ');
Sql.Add(' AND DANWI =:CODE2 ');
Sql.Add(' AND JIBU =:CODE3 ');
Sql.Add(' AND ACCNT =:CODE4 ');
Sql.Add(' AND PROJECT =:CODE5) YES ');
// Sql.Add(' (SELECT SUM(AMOUNT) WONAMOUNT FROM YESANINFO');
// Sql.Add(' WHERE COMPANY =:CODE0 ');
// Sql.Add(' AND YY =:CODE1 ');
// Sql.Add(' AND DANWI =:CODE2 ');
// Sql.Add(' AND JIBU =:CODE3) WON ');
Parameters.ParamByName('CODE0').Value := '11';
Parameters.ParamByName('CODE1').Value := Copy(ed_yymmdd.text,1,4);
Parameters.ParamByName('CODE2').Value := Trim(ed_danwi.Text);
Parameters.ParamByName('CODE3').Value := Trim(ed_jibu.text);
Parameters.ParamByName('CODE4').Value := Trim(ed_accnt.Text);
Parameters.ParamByName('CODE5').Value := Trim(ed_project.Text);
Active := True;
End;
빠져있습니다. 그것때문에 아래와 같은 에러가 나는거 같습니다.
메세지를 원어로 올리셨으면.....구래두 잘 알아볼 수 있을거 같은데....
결론적으루.....
Sql.Add(' AND PROJECT =:CODE5) YES '); --> 이것을....
Sql.Add(' AND PROJECT =:CODE5) YES, '); --> 요렇게...하시고,,
YES 라는 인라인 테이블하고, WON 이라는 인라인 테이블하고
조인 조건이 없는데.... 없어도 되는건지 궁금합니다.
원래 테이블이 조인될 경우.. 조인조건은 필수이고,,, 없을시에
비정상적인 결과가 나올수 있습니다.(일명 카티시안 곱)
그리고,,, WON이라는 인라인 테이블에서는 가져오는 값이 없는데
왜 저렇게 쓰셨는지...이해가 잘 안 됩니다.
위와 같이 YES 다음에 콤마를 추가한다면 Error는 안날지도 모르지만
문제를 해결할 수는 없을것 같습니다.
도움이 되길....