|
근데... like 조건은 홑따옴표가 없는게 맞지 않나요? 혹시나해서 그렇게 쿼리의 조건을 주니까 조회가 안되더라구요.....
첨부의 쿼리(조회결과용질의_처리내역)의 조건에서...
제생각엔 Between ... and ... 가 문제인것 같거든요..
between.. 조건을 안주니까 문제가 없는데,
그 조건을 주면 위의 에러 메세지가 자꾸 뜨걸랑요.....
==============[용용님 글에 대한 답변입니다]==============
눈이 시어서 집중력이 떨어지는군요....
1) Like는 문자열 형식의 자료검색에 쓰는 연산자입니다.
당연히 홑따옴표나 겹따옴표로 둘러싸야 합니다.
그렇지 않으면 개체나 매개변수로 처리합니다.
따라서
조회결과용질의_처리내역이란 질의디자인 창에서 폼을 참조하는 조건을 넣었다면
그리고 querydef개체의 sql문을 직접 작성하고자 한다면
그때 폼을 참조하는 조건 전후로 따옴표를 칠 필요는 없습니다.
질의테이블이나 querydef개체에서 그것을 매개변수로 처리하거나 참조할 개체로 처리하기 처리하기 때문입니다.
1) 질의 디자인 창에서 직접 입력할 때 작성된 질의문
예를 들면
SELECT cms_only_data.상담원, *
FROM cms_only_data
WHERE (((cms_only_data.상담원) Like "*" & [Forms]![처리조회조건]![txtSearch_상담원] & "*"));
2) QueryDef개체의 SQL속성을 직접 설정할 때
예를 들면
Dim qdf As DAO.QueryDef
strSQL = "SELECT cms_only_data.상담원, * FROM cms_only_data " _
"WHERE (((cms_only_data.상담원) Like "*" & [Forms]![처리조회조건]![txtSearch_상담원] & "*"));"
Set qdf = CurrentDb.QueryDefs("조회결과용질의_처리내역")
qdf.sql = strSQL
3) 그러나 질의문을 작성하여 레코드셋 개체를 여는 경우
다음과 같이 해야 한다는 것입니다.
버튼의 클릭이벤트에서 DAO의 레코드셋개체를 만들어 자료가 있는지 여부를 확인하는 코드에서 다음과 같이 작성을 해야 한다는 것이지요.
예를 들면
strSQL = "SELECT cms_only_data.상담원, *
FROM cms_only_data
WHERE (((cms_only_data.상담원) Like "*" & [Forms]![처리조회조건]![txtSearch_상담원] & ""*));"
set rst = Currentdb.OpenRecordset(strSQL)
만약 이 경우 2)의 경우과 같이 질의문을 작성한다면 오류가 발생합니다.
2) Between은 숫자/날짜를 비교하는 겁니다.
따라서 ""이 붙으면 오류를 일으킵니다.
따라서 필드를 숫자형으로 바꾸시던지
아니면 Val()함수나, CLng() 등 형변환 함수를 사용하여
임시로 숫자로 변형하시던지 해야합니다.
아니면 필드자체를 숫자형이나 날짜형으로 해시던지요...
프로그래밍 할 때 데이타 형에 대해 아주 주의하셔야 합니다.
((cms_only_data.접수일자) Between val([Forms]![처리조회조건]![date_from]) And val([Forms]![처리조회조건]![date_until]))
3) 그리고 f처리내역조회결과 폼에서 사용되는 질의인 f처리내역조회결과의 조건의 경우
조건이 길어서 잠깐 다른 생각을 했는데 AND로 하면서 조건이 없는 경우는 와일드카드 문자로 해결하셨더군요=> 그러면 문제는 없습니다.
전체적인 문장은
다음과 같이 되겠습니다.
SELECT cms_only_data.고객명, cms_only_data.관리번호, cms_only_data.접수일자, cms_only_data.세부지역, cms_only_data.상담원, cms_only_data.서비스번호, cms_only_data.사용지역, *
FROM cms_only_data
WHERE (((cms_only_data.고객명) Like "*" & [Forms]![처리조회조건]![txtSearch] & "*") AND ((cms_only_data.관리번호) Like "*" & [Forms]![처리조회조건]![txtSearch_관리번호] & "*") AND ((cms_only_data.접수일자) Between val([Forms]![처리조회조건]![date_from]) And val([Forms]![처리조회조건]![date_until])) AND ((cms_only_data.세부지역) Like "*" & [Forms]![처리조회조건]![txtSearch_불만내역] & "*") AND ((cms_only_data.상담원) Like "*" & [Forms]![처리조회조건]![txtSearch_상담원] & "*") AND ((cms_only_data.서비스번호) Like "*" & [Forms]![처리조회조건]![txtSearch_전화번호] & "*") AND ((cms_only_data.사용지역) Like "*" & [Forms]![처리조회조건]![txtSearch_사용지역] & "*"));
그럼 ...:))
|
|