Q&A

  • 다시한번.. Query문제 (SQL server2000)


현재 컴의 환경은 win2000server advance 에 SQL server2000 을 사용하고 있구요..

일단 로컬접속하여 사용하고 있는데...



ADOQuery1은 ADOconnection1을 통하여 SQL2000server에 연결 되어 있습니다.

그런데, % 문을 아래와 같이 사용해서 이름을 찾으면 찾지를 못합니다.



ACCESS 테이블에서는 잘 되었는데.. SQL server에 연결 하여 쓰려니 잘 안됩니다.



//또한 한번 못찾으면 다음에 EDIT1에 다른 값을 넣고 찾아도 못찾고 Bof EOF 어쩌고 하면서 에러가 나네요..

--->이 문제는 ado패치를 받아서 해결 했습니다.(많은 질문과 답변이 있었네요.. 감사^^)



SQL2000의 문제인지 모르겠습니다.



혹 SQL2000의 문제라면 다른 방법은 없는지요...

고수님들의 답변을 갈망? 하고 있습니다..







procedure TForm1.Button2Click(Sender: TObject);//버튼을 클릭하면 찾는다.

begin

adoquery1.Close;

adoquery1.sql.clear;

adoquery1.SQL.Add('select s_name1,s_gab from mas_file');

adoquery1.SQL.Add('where s_name1 like :findstr'); <-

adoquery1.Parameters.ParamValues['findstr'] := '%'+trim(edit2.Text)+'%'; <-

adoquery1.open;

end;



<- 의 두문장을



adoquery1.SQL.Add('where s_name1 = :findstr');

adoquery1.Parameters.ParamValues['findstr'] := trim(edit2.Text);



로 했을때는 됩니다만,,, 의도와는 다른 프로그램이 되어 버립니다...





1  COMMENTS
  • Profile
    소망이 2001.06.20 02:01
    일단 가장 중요한것은 쿼리문을 데이테베이스에 보낼때 모든것이 문자열이여야 한다는 것입니다.

    그래서 위의 sql 문은 다음과 같이 바뀌어야 합니다.



    select * from register where name like "%호림%"



    싱글코테이션은 델파이에서도 문자열을 치환할때 사용하기 때문에 sql 서버에 보낼때는 정상적으로 데이타를 보낼수가 없는 것입니다.



    위의 구문도 어떤 sql server에서는 에러가 날겁니다. 그것은 sql서버 설정에서 더블코테이션을 사용하지 않는다는 옵션이 있을 경우에 말입니다.

    그러한 경우는 다음과 같이 sql구문을 작성하시면 됩니다.



    with Query1 do begin

    close;

    SQL.Clear;

    SQL.Add(' select * from register where name like ' + #39 + '%호림%' + #39);

    Open;

    end;



    도움이 되셨는지 모르겠네요....^^&



    %%%% 이 글을 올리신 분께 감사 드립니다.(누구신지는 잊어먹었네용~ )