Q&A

  • 'SQL 명령어가 옳바르게 종료되지 않았습니다.' 라는 에러발생
델파이 허접에 질문입니다...

디비는 오라클7을 쓰고 있구요

쿼리문은 파빌에서 쓰던거를 그대로 같다 붙였는데

아래와 같은 에러가 발생하더군요

답변부탁드립니다....

procedure TForm1.FormShow(Sender: TObject);

var
   SqlStr : string;
begin
  with DM.Query1 do
   begin
   Close;
   SQL.Clear;
====================================================================
   SqlStr := 'Select a.entp_cd as entp_cd, b.contents1 as entp_nm from     com_entp a, com_code b';
   SqlStr := SqlStr + 'where  a.entp_cd(+) = b.sub_code1' ;
   SqlStr := SqlStr + 'and    "entp_cd"    = b.main_code' ;
   SqlStr := SqlStr + 'group by a.entp_cd, b.contents1' ;
   SqlStr := SqlStr + 'order by  a.entp_cd';
   SQL.Text := SqlStr;
======================================================================
이부분에서 에러가 발생합니다.

'SQL 명령어가 옳바르게 종료되지 않았습니다.' 라는 에러가 뜨는데요

점 갈쳐주세요...

   Open;

   first;
   DbComboBox1.Items.clear;

   While Not Eof do
    begin
     DbComboBox1.items.add(fieldbyname('entp_nm').ASString);
     next;
    end;
   end;


end;
4  COMMENTS
  • Profile
    김상수 2002.08.29 23:12
  • Profile
    KDDG_ZZOM 2002.08.29 22:30
    from     com_entp a, com_code b';

    요기서여...from com_entp a, com_code b
    하고 where이하고 붙어버렸네요...
    from     com_entp a, com_code b ' 이케 스페이스를..
    글구 이런경우는 완성된 쿼리문을 돌려보면 틀린부분을 쉽게 찾을수있어요...

    즐프하세요...


  • Profile
    김영석 2002.08.29 22:27
    SqlStr := 'Select a.entp_cd as entp_cd, b.contents1 as entp_nm from  com_entp a, com_code b ';
                                        ^
       SqlStr := SqlStr + 'where  a.entp_cd(+) = b.sub_code1 ' ;
                                                                                  ^
       SqlStr := SqlStr + 'and    "entp_cd"    = b.main_code ' ;
                                          ^1         ^1                      ^
       SqlStr := SqlStr + 'group by a.entp_cd, b.contents1 ' ;
                                                                              ^
       SqlStr := SqlStr + 'order by  a.entp_cd';

       SQL.Text := SqlStr;

    ^ 라고 된부분에 스페이스가 들어 가야 할것 같은데요..

    그리고 ^1 부분은 필드명인것 같은데..  왜 " 로 되어 있는 잘 모르겠네요..

    그리고 Sql을 사용하실때는 문장을 만들고 Tmemo에 출력하신다음..
    그 쿼리가 제대로 실행되는지를 확인하시면 그렇게 고생 안 하실텔데..

    도움이 되었으면 합니다.

  • Profile
    김상수 2002.08.29 23:32

    답변 감사드리구요..

    님이 말씀하신 부분 있잖아요


       SqlStr := SqlStr + 'and    "entp_cd"    = b.main_code ' ;
                                          ^1         ^1                      
    그리고 ^1 부분은 b.main_code의 값이 entp_cd와 같은것 이라는 표현인데

    entp_cd는 그냥  값입니다.

    " " 써도 에러가 나고 ' '을 해도 에러가 나는데 어떻게 해야하겠습니까?

    허접의 질문에 귀찮더라도 답변 부탁드립니다...^^;