일단 검색이 된다니 반쯤은 성공하셨군요. 그리고 다시 질문내용에서
SQL 문자열을 넘기는데 문제가 있는 것 같군요. SQL에 문자열을 넘길
때는 Format 함수를 이용하면 편리합니다. 아래에 그 예를 적어보겠
습니다. 참고로 변수를 's'로 선언하면 인수로 넘길때 기호와 혼돈
되기 때문에 SqlStr로 변경했습니다.
var
SqlStr: string;
begin
...
// 만약 사용자가 '%'문자를 Edit.Text에 바로 입력했다면
// '%'는 필요없겠지요.
SqlStr := '%'+Edit.text +'%';
// 오류가 있는 문장
Query.SQL.Add('select * from samp where FH like "%SqlStr%"');
// 수정된 문장
Query.SQL.Add(Format('select * from samp where FH like %s',[SqlStr]));
..
end;
위의 수정된 문장은 Format함수를 이용해서 SQL문장에서 인수를
받아들이도록 한 것입니다. 여기서 '%s'는 스트링문자열을 인수
로 받아들이겠다는 뜻이 됩니다. Format 함수 사용법은 help문에
아주 잘 나와 있습니다.
Format 문장안에 '%'이라는 기호를 사용하기 때문에 위에서 SqlStr에
'%'기호를 아예 첨가하도록 한 것입니다. 그런데 제가 사용할 때는
위와 같이 '%'를 첨가하지 않고 바로 씁니다. 사용자가 선택해서 사용
할 수 있도록 하면 되겠지요. 즉 사용자가 '_'.'%'의 문법을 알고 있다
면 다양한 방식으로 검색을 수행할 수 있을 겁니다. 프로그램에서는
단지 Edit.Text만 SqlStr로 넘기면 되겠지요.
그리고 파라독스에서 DbMemo처리는 자세히 모르겠군요. 한번도 그렇게
사용한 적이 없어서요. 저는 검색이 필요할 경우는 DBMemo로 사용하지
않거든요. 아주 불편해서리....
그리고 SQL의 이러한 검색방법에 대한 내용은 DestTop 도움말에 SQL장에
보면 Local SQL이라는 것이 있습니다. 파라독스나 dBase의 경우는 모두
Local SQL에 따릅니다. 여기서 Like에 대해 찾아보면 자세히 나올 겁니다.
이번에는 성공하셨으면 하군요. 그럼 좋은 하루 되세요.
|