var
name : string;
begin
name := 'kikiki';
with Query1 do
begin
close;
sql.clear;
sql.add('select A.book_title , B.user_name from book_info.DB A left join rent_info B');
sql.add('on A.code = B.code');
sql.add('where A.book_rent_name=B.user_name');
//sql.add('and A.book_rent_name="'+name+'"');
label1.caption := Query1.text;
open;
end;
end;
주석 처리 된 부분에요 A.book_rent_name= 이분분뒤에요 name이란 변수를
쓰고 싶은데 db에서 에러가 나는군요.. 어떻게 해야 하나요.
조언 부탁 드립니다. db는 access를 썼거든요.....
잘보니까 더블퀘스쳔 마크 를 쓰셧네요...
Access는 안써봐서 잘 모르겠는데.. 이건 기본적으로 필드명을 구분할때 쓰죠??
그러니까.. 이게 문자열이라는 걸 알리려면 작은따옴표를 쓰셔야죠...
그런데... 작은따옴표 안에 작은따옴표를 쓰고 싶으시면 두개를 써야 합니다...
잉??? 말이좀 어렵다....
그러니까 작은따옴표를 단지 문자로 인식하게 해서 보낼려면 '''' <-- 요렇게 해야
합니다...
그러니까 코딩이 이렇게 바뀌어야 합니다.
'A.book_rent_name= ''' + name + '''' );
아시겠죠??? 이렇게 하면 name 앞에 다옴표가 하나 붙게 되고 뒤에도 하나 붙게 되죠...
그러면 실제 이게 SQL문으로 변역 될때는
name 의 내용이 aaa라고 하면
and A.book_rent_name= 'aaa'
가 되는 거죠... 이게 원하시는거 맞죠???
-----------------------------------------------
그런데 디버깅 할것도 아니면서 왜 이렇게 하죠???
그냥 파라메터로 넘겨요... 이렇게
SQL.Add( ' and A.book_rent_name = :brent_name ');
ParamByName('brent_name').AsString := name;
<-- 요렇게요... SQL문 내에서 ':'이게 붙은 문자열은 파라메터를 넘겨 받아서
그값을 사용하죠... 이게 더 쉽죠???/
위에 것은 그냥 참고 하세요... 혹시 쓸데가 있을지 압니까??? 그럼..
즐거운 시간 되시구요... SQL공부좀 더하셔야 겠네요..
그럼... 하얀까마귀 -
bhkmm wrote:
> var
> name : string;
> begin
> name := 'kikiki';
> with Query1 do
> begin
> close;
> sql.clear;
> sql.add('select A.book_title , B.user_name from book_info.DB A left join rent_info B');
> sql.add('on A.code = B.code');
> sql.add('where A.book_rent_name=B.user_name');
> //sql.add('and A.book_rent_name="'+name+'"');
> label1.caption := Query1.text;
> open;
> end;
> end;
> 주석 처리 된 부분에요 A.book_rent_name= 이분분뒤에요 name이란 변수를
> 쓰고 싶은데 db에서 에러가 나는군요.. 어떻게 해야 하나요.
> 조언 부탁 드립니다. db는 access를 썼거든요.....
>