Q&A

  • stringreplace로 SQL쿼리문을 변경시 파라미터부는 변경이 안되는건가요?
TQuery 의 SQL에 파라미터포함된 쿼리를 ADD하고, 임시문자열에 gettext한다음, 이 임시문자열의 파라미터를 입력하게하여, 이 파라미터명을 입력박스의 값으로 stringreplace로 치환하려하니 변경이 않되더군요.  
SQL문은 메모박스로 입력받으므로 줄이 2개이상 있을수있고, 따라서 줄사이 #13 이 포함된 문자열자체를 쿼리문에 ADD시킵니다.  파라미터는입력시':'를 먼저 쿼리에서 존재할수없는 'marp'라는 문자열로 변환하는데까지는 이상이없는데, marp-라는 파라미터를 대치값으로 변경이 않되는군요.

예)
select * from tab where rownum<=:a_rn

-> 입력값 '10', stringreplace(쿼리열,':','marp',[rfreplaceall])

select * from tab where rownum<=marpa_rn (O)

-> stringreplace(쿼리열,'marpa_rn','10',[rfreplaceall])

select * from tab where rownum<=marpa_rn (여기서 pos함수로 위치를 찾아집니다면, stringreplace 함수는 안먹더군요)

stringreplace함수를 찾아보니 대문자로 바꾸고 안시스트링으로 바꾸는듯합니다만, 이후 뭔가 잘못처리한부분이 있나요.
1  COMMENTS
  • Profile
    nilriri™ 2007.02.15 19:04
    어떻게 코드를 작성하셨는지 모르겠지만 설명하신 내용으로 봐선 안될이유가 없어 보이구요.. :을 marp로 바꾸는 이중 작업은 필요 없을것 같은데요..

    lsSQL := StringReplace(lsSQL, ':a_rn', '10', [rfReplaceAll]);

    Query.SQL.Text := lsSQL;

    이렇게 한번에 바꾸셔도 되는데요...

    천천히 다시한번 확인해 보심이...보이지 않는 실수를 하신듯  ^^