|
참고] 이 속성에서는 IsNull() 이라는 함수를 사용할 수 없습니다. IsNull([필드/변수/컨트롤이름]) 과 같이 사용하는데 필드의 유효성 검사 규칙상에서는 필드를 참조 할 수 없기 때문입니다. 따라서 Null 이라는 키워드를 사용합니다. |
아직은 이른 감이 있지만 VBA 코드 상에서는 다음과 같이 사용합니다.
Variant 변수에는 Null값을 할당할 수 있으므로 모듈을 하나 만들고 다음 코드를 모듈에 복사한 다음 커서를 Function testNull() 내에 클릭해 두고 삼각형의
실행 버튼 메뉴를 클릭하여 코드를 실행해 보십시오
Function testNull()
Dim varRet As Variant
varRet = Null
Debug.Print IsNull(varRet) '직접실행 창에 True라고 찍힙니다.
End Function
참고] Variant 변수에는 초기화 되기 전까지 값은 Empty 입니다. VBA에서 다른 변수들은 Dim 문으로 변수를 정의하면 기본적인 값으로 초기화 됩니다. 그러나 Variant 변수는 초기화 되지 않고 Empty 상태로 존재합니다. Variant 변수의 초기화 여부는 IsEmpty()라는 함수를 이용합니다. |
필드에 Null 값 입력이 허락되어 Null 값이 들어 있는 경우나 Null 허용되는 컨트롤의 값을 확인하는 경우나 Variant 변수 값을 확인하는 경우에 있어서 Null 값은 오류가 발생하는
원인이 됩니다.
따라서…
Null 값을 허용하게 되면 Null 값인가 아닌가를 검사하는 부분이 추가되어야 합니다. 다시 말해 "<> 8 Or Is Null"과 같이 유효성 검사 규칙에 "Is Null" 부분이 추가되어야 오류가 없이 검사 규칙이 이행됩니다. 코드상에서는 IsNull()함수를 이용하여 검사하는 부분이 추가되어야 합니다. 이러한 오류는 초보자를 몹시 괴롭힙니다. 명심하십시오
기본 키 필드 같은 일부 필드에서는 Null 값을 포함할 수 없습니다.
빈 문자열
문자가 포함되지 않은 문자열입니다. 빈 문자열을 사용하여 필드에
값이 없음을 표시할 수 있습니다.
빈 문자열을 입력하려면 큰따옴표 두 개를 그 사이에 공백 없이 붙여서
("") 입력합니다.
다음은 필수(Required) 및 빈 문자열허용(AllowZeroLength) 속성 설정을 결합할 때 예상되는 결과를 보여주는 표입니다.
필수 Required |
빈 문자열 허용 AllowZeroLength | 사용자 작업 | 저장되는 값 |
No | No | Enter 키를 누릅니다. 스페이스 바를 누릅니다. 빈 문자열을 입력합니다. |
Null Null (사용할 수 없음) |
No | Yes | Enter 키를 누릅니다. 스페이스 바를 누릅니다. 빈 문자열을 입력합니다. |
Null Null 빈 문자열 |
Yes | No | Enter 키를 누릅니다. 스페이스 바를 누릅니다. 빈 문자열을 입력합니다. |
(사용할 수 없음) (사용할 수 없음) (사용할 수 없음) |
Yes | Yes | Enter 키를 누릅니다. 스페이스 바를 누릅니다. 빈 문자열을 입력합니다. |
(사용할 수 없음) 빈 문자열 빈 문자열 |
이미 언급했지만 Null값이 허용되면 약간 번거롭습니다. 전혀 Null 값을 고려하지 않고 '빈 값 = 빈 문자열' 이란 생각으로
필드 작업을 하는 것이 초보자의 경우 일단 편할 겁니다. 따라서 위의 표에서 알 수 있듯이 Null이 입력되지 않고 빈 문자열만 입력하려면 필수 속성과 빈 문자열 허용을 <예>로 설정하면 되겠습니다. 그런데 빈 값을 넣기 위해 항상 스페이스 바를 누르거나 따옴표를 두 번("") 입력해야 합니다.(설마
공백 없이 따옴표를 두 번 입력하면 빈 문자열이 입력된다는 것을 모르시지는 않겠지요?)
하여간 너무 번거롭습니다. 방법이 없을까요?
없을 리는 없죠! 필드의 기본값 속성에 공백 없는 따옴표 두 개("")를 설정해 두면 됩니다.
다음 그림은 예제 파일의 Employees 테이블의 TestField 라는 필드의 속성 설정입니다.
빈 문자열 값과 Null 값의 구분
1) 테이블에서 필드의 형식속성을 이용하여 설정합니다.
예제 테이블 Employees의 CellPhone의 Format 속성을 다음과 같이 설정하였습니다.
(@@@@)@@@@\-@@@@;"없음";"미확인"
첫 번째 섹션은 입력마스크인 < \(CC99\)9999\-9999;;_ >와 비슷합니다. 이렇게 설정함으로써 입력마스크의 모습을 유지하여 보여줄 수 있습니다.
그렇지 않으면 입력할 때와 화면에 보여지는 모습이 다르게 됩니다.
두 번째 섹션이 빈 문자열일 때, 세 번째 섹션이 Null 값일 때 필드에 보여 줄 텍스트입니다.
입력마스크의 앞부분의 CC는 빈 문자열 값 즉 따옴표 2개 ("")를 입력할 수 있도록 설정한 것입니다.
2) 계산식을 이용하는 경우에는 IsNull()함수를 이용합니다.
속성설정을 하지 않고 계산식만을 이용하여 질의에서 계산필드를 하나 만들어 본다면 다음과 같겠습니다.
CPhone: IIf(IsNull([CellPhone]), "미확인", IIf([CellPhone]="", "없음", [CellPhone]))
Null 과 빈문자열을 구별하지 않고 하나의 경우로 처리한다면
Null 값이나 빈문자열 값을 모두 하나의 경우로 처리한다면 필드의 형식 속성에선
세 번째 값을 생략하면 됩니다.
@;"모름"
계산식에서는
CPhone: IIf(IsNull([CellPhone])
Or [CellPhone]="", "모름", [CellPhone]))
이때 Nz 함수를 이용하는 것이 간편합니다. Nz()함수에 대해서는 도움말을 참고하십시오.
CPhone: IIf(Nz([CellPhone],"")="", "모름",[CellPhone])
예제 파일]
예제 파일에는 휴대전화 번호 필드(CellPhone)필드를 < 필수-아니오, 빈 문자열허용-예> 로 설정하여 필드가 비어 있을 때 그것이 휴대전화를 가지고 있는지 확인하지 않은 경우인가 아니면 휴대전화가 없다는 것을 확인하는 필드의 형식속성 예와 질의테이블의 계산필드 예가 들어 있습니다.
- 다운 로드 : 필드의 빈값.mdb
- 다운 로드 : 필드의 빈값_97.mdb