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

작성자:  

 이형재 (redapricot)

추천:  0
파일:     조회:  41
제목:   null 관련 질문 드립니다.
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 액세스 버전(2007-2016):

* 아래줄에 질문을 작성하세요 >> 
정상적으로 잘 되던 프로시저에서 오류가 발생했습니다. 원인은 테이블의 필드에 null 값이 만들어지게 상황이 바뀐 이후부터 입니다. 그래서 null 값이 있는 경우와 없는 경우로 나누어 데이터를 추출하려고 하는데 쉽게 풀리지 않아 도움을 요청드립니다.

테이블의 해당 필드 속성에는, 아무런 지정을 하지 않은 상태입니다. 필수는 '아니오'이고, 유효성검사규칙은 조건을 입력하지 않았습니다. 데이터형식은 '짧은 텍스트' 입니다. 

이렇게 한 이유는 홈페이지에서 다운로드 받은 엑셀파일을 access 테이블로 옮겨 편집한 후 다시 엑셀파일로 내보내야 하므로, 혹시라도 엑셀파일을 테이블로 옮겨올 때  미리 지정된 속성으로 인하여 생각치 못한 오류가 만들까 염려되어 지정하지 않았습니다. 필드의 데이터 형식 속성은 모두 짧은 텍스트로 사용하고 있습니다.

오류가 발생하고 있는 코드의 내용은 주문수량이 2개 이상인 레코드를 추출하는 내용입니다. select 구문으로 테이블의 레코드를 불러들이는데, 다음은 그 동안 문제가 없었던 코드입니다.

select * 테이블명
where clng(주문수량) >= 2
order by 주문자명

그동안은 필드 '주문수량'에 null 값이 없는 상황이어서 위와 같은 구문으로 문제없이 잘 구동되었습니다.  그런데 최근 테이블에 레코드를 임의로 추가하는 경우가 발생했고, 그로인하여  '주문수량' 필드에 null 값이 만들어지게 상황이 바뀌었습니다. 그 때부터 null로 인한 오류가 발생되기 시작한 것입니다. 

null 문제를 해결하기 위하여 바꾼 코드는 다음과 같습니다.

select * 테이블명
where nz(주문수량) and clng(주문수량) >=2 
order by 주문자명

위와 같이 했더니 레코드 추출이 전혀 되지 않고 있습니다. and 뒤에 다양한 시도를 했지만 해법을 찾지 못하고 있습니다. 
clng(주문수량) >=2
에 문제가 있는 것 같은데, 며칠 째 방법을 찾지 못하고 있습니다.

주문수량 필드에 null값이 있는 경우는 아래와 같은 여러가지 방법으로 추출이 가능했습니다. 
where clng(isnull(주문수량)) = 0 
where isempty(주문수량) =0
where nz(주문수량)

그런데 and로 2개 이상인 코드를 추가하면 그 때부터 레코드 추출이 되지 않습니다. 

주문수량 필드가 'null이 아니면서 2보다 큰' 레코드를 추출하려면 코드를 어떻게 바꿔야 할까요?
 
[불량 게시물 신고]  
황동준Val(Nz(주문수량, "0")) >= 205-01 (18:14)
삭제 ■신고
이형재아~ 되네요.
고맙습니다. 어려움에 부딪칠 때마다 도움 주셔서 감사합니다.
05-02 (21:20)
삭제 ■신고
이형재그런데 "0"을 왜 넣는 건가요?05-02 (22:29)
삭제 ■신고
황동준Nz 함수의 선택 인수는 0,"","text" 등 Null 값을 대체하는 값을 지정합니다.
해당 필드가 Null일 경우 0을 반환하라고 지정한 것입니다.
선택 인수를 지정하지 않으면 빈 문자열을 반환합니다.

여기서는 숫자 계산이므로  0 이 맞겠습니다.
해당 필드에 숫자 또는 Null만 존재한다면 Val함수도 필요없습니다만, 문자가 포함되어있는 경우 Val함수로 숫자로 변환하여 계산합니다.
05-03 (08:39)
삭제 ■신고
이형재해외 출장 다녀오느라 답이 늦었네요.
상세한 설명 감사합니다~
05-09 (07:00)
삭제 ■신고
        
  

작성일 : 2025-05-01(10:41)
최종수정일 : 2025-05-01(10:41)