나눔터  
  HOME > 나눔터 > 묻고답하기 > 액세스
액세스
액세스에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 김규경 (k3dragon)

추천:  0
파일:     조회:  4539
제목:   [RE]김규경님!다시한번 봐주세요
     
 
근데... 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_사용지역] & "*"));


그럼 ...:))
 
[불량 게시물 신고]  
        
  

작성일 : 2001-08-07(08:35)
최종수정일 : 2001-08-07(12:46)
 


 ◎ 관련글

  제 목   작성자   날짜
김규경님!다시한번 봐주세요 용용 2001-08-06
[RE]김규경님!다시한번 봐주세요 김규경 2001-08-07
[RE]해결되었네요.. 용용 2001-08-08
[RE]^^ 기쁘군요.(냉무) 김규경 2001-08-10
[RE]김규경님!다시한번 봐주세요 비가오면 2001-08-06