* 사용환경 : 델파이5 / Windows 2000
adoconnection, adoquery, datasource, dbgrid를 이용해서
form1의 edit1.text에서 테이블명을 받아 그 결과를 form3이 뜨면서 보여주려 합니다.
폼 3의 코딩은 다음과 같이 하였습니다.
procedure TForm3.FormCreate(Sender: TObject);
var vedit : string;
begin
vedit := form1.edit1.text;
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.sql.Add('select query, count(*) as su from '+vedit+'');
adoquery1.sql.add(' group by query order by count(*) desc');
adoquery1.open;
end;
에러 메세지는 다음과 같습니다..
project project1.exe raised exception class EOleException with message 'incorrect syntax near the keyword 'group'. process stopped. use step or run to continue.
제가 많이 급합니다. 제발좀 도와주세요....
전 초보고 무지하거든요. 자세히좀 알았으면 합니다..
> * 사용환경 : 델파이5 / Windows 2000
>
> adoconnection, adoquery, datasource, dbgrid를 이용해서
> form1의 edit1.text에서 테이블명을 받아 그 결과를 form3이 뜨면서 보여주려 합니다.
> 폼 3의 코딩은 다음과 같이 하였습니다.
>
> procedure TForm3.FormCreate(Sender: TObject);
> var vedit : string;
> begin
> vedit := form1.edit1.text;
> adoquery1.Close;
> adoquery1.SQL.Clear;
> adoquery1.sql.Add('select query, count(*) as su from '+vedit+'');
> adoquery1.sql.add(' group by query order by count(*) desc');
> adoquery1.open;
> end;
위의 문장을 이런식으로 바꿔보시죠 ?
With Adoquery1 Do Begin
SQL.Close;
SQL.Clear;
SQL.Text := 'Select Query, Count(*) As Su From ' + vEdit +
'Group by Query ' +
'Order by Count(*) Desc ';
Open;
End;
물론 위의 문장과 동일한 것이지만 보기에 더 깔끔할것 같은데요.
특별한 문제점은
adoquery1.sql.Add('select query, count(*) as su from '+vedit+'')
부분이 잘못된것 같아요.
참고로 위의 문장은
adoquery1.sql.Add('select query, count(*) as su from '+vedit)
이렇게 해야 맞습니다. ' '는 하나의 문자열을 만드는 것이기 때문에
뒤에 + vedit만 하면됩니다.