배움터  
  HOME > 배움터 > 무료강좌
무료강좌
 
액세스 2000, 김규경님의 데이터베이스 기초 다지기 - 17강. 신뢰성 있는 자료 구축 (2) - 유효성 검사 규칙, Access 2000
  


17강. 신뢰성 있는 자료 구축 (2) - 유효성 검사 규칙

지난 강좌에서는 신뢰성있는 자료를 얻기 위한 방법으로 데이터 형식 속성의 적절한 사용에 대해 말씀드렸습니다. 입력된 값은 필드의 데이터 형식에 맞지 않으면 자동으로 입력이 거부됩니다. 따라서 적절한 데이터 형식(DataType)을 사용하면 큰 노력없이 입력되는 자료의 유효성을 유지할 수 있습니다. 그리고 또 입력마스크 속성, 기본값 속성 등을 사용하는 것에 대해서도 말씀을 드렸습니다.

참고 : kkk_01_5.asp
 

1) 필드 수준의 유효성 검사 규칙

필드, 레코드 유효성 검사 규칙이 적용되는 시점은 다음과 같습니다.

• 필드에 설정하는 유효성 검사 규칙은 데이터를 편집하거나 포커스가 필드를 벗어날 때 적용됩니다.
• 레코드의 유효성 검사 규칙은 다른 레코드로 이동할 때 적용됩니다.

유효성 검사규칙의 표현식을 작성 예제입니다.

ValidationRule 속성 ValidationText 속성

<>0

0이 아닌 값을 입력

> 1000 Or Is Null

1000보다 큰 값을 입력 또는 비워둠

Like "A????"

"A"로 시작하는 5문자를 입력

Between “ㄱ” and “ㄴ”

“ㄱ” 과 “ㄴ” 사이의 문자만 입력

>= #1/1/96# And <#1/1/97#

1996년의 날짜를 입력

DLookup("CustomerID", "Customers", "CustomerID = Forms!Customers!CustomerID") Is Null 고유한 CustomerID를 입력해야 합니다. 도메인 계산 함수는 테이블/필드의 유효성 검사에서는 사용할 수 없습니다. 폼(폼 수준)에서 유효성 검사에만 허용됩니다.


주의 사항

1. 필드의 유효성 검사규칙에서는 필드이름을 직접 사용할 수 없습니다. 즉, 표현식에 필드이름을 넣어서 작성하지 못합니다. 필드 값을 참조 하려면 레코드 수준에서 가능하므로 테이블의 속성 창을 불러내서 유효성 검사 규칙에 필드를 참조하는 표현식을 사용해야 할 겁니다.

2. 필드의 유효성 검사 규칙을 만들면 Microsoft Access는 일반적으로 필드에 Null 값이 저장되지 않도록 합니다. Null 값이 허용되게 하려면 "<> 8 Or Is Null"과 같이 유효성 검사 규칙에 "Is Null"을 추가하고 필수(Required) 속성이 ‘아니오’로 설정되었는지 확인합니다.

3. Null 값을 허용된 필드에서 유효성 검사 규칙의 표현식을 작성 할 때 필드 값이 Null 값인가 아닌가를 검사하는 부분이 추가되어야 오류가 발생하지 않는다고 말씀 드렸습니다.

참고 : http://www.officetutor.com/column/kkk-db/kkk_01_6.htm

4. 도메인 계산 함수는 테이블의 유효성 검사에는 사용할 수 없습니다. 폼 수준 유효성 검사에만 사용됩니다.

참고] 표현식 작성시 리터럴 값 입력 요령

리터럴 값은 테이터 형식에 따라 표현하는 방법이 다릅니다.
1) 텍스트 속성의 필드에 조건을 줄 때는 따옴표(“)로 둘러싸야 합니다.
2) 날짜 형식의 필드에 조건을 줄 때는 샤프(#) 기호로 둘러싸야 합니다.
3) 숫자필드인 경우는 특별하게 둘러 쌀 필요는 없습니다.


2) 레코드 수준의 유효성 검사규칙

필드수준의 유효성 검사규칙의 표현식에는 필드를 참조할 수 없다고 하였습니다. 그러나 레코드 수준의 검사는 필드를 참조할 수 있어 하여 관련된 필드의 값을 참조, 비교 검사할 때 유용합니다.

필드 수순의 유효성 검사 규칙은 필드 값이 수정될 때 마다 작동되지만 레코드 수준의 유효성 검사는 레코드의 자료가 저장되거나 레코드를 이동할 때 유효성 검사를 합니다.

레코드 수준의 유효성 검사 규칙을 설정하려면 먼저 테이블을 ‘디자인 보기’로 연 다음 우측 버튼을 눌러 단축메뉴를 불러내고 속성을 클릭하여 ‘테이블 속성’ 창을 불러내서 적절한 식으로 설정해 줍니다.


유효성 검사 규칙을 위한 식을 작성하는 방법은 ‘식의 작성’ 강좌를 참고하십시오.

참고] 숫자 형식으로 날짜를 운영할 때
가끔 날짜정보를 날짜 데이터 형식으로 사용하지 않고 ‘20020101’ 과 같이 숫자 형식으로 날짜를 운영하는 분들이 계십니다. 날짜 형식으로 지정하면 8바이트가 소모되지만 숫자(정수/Long)로 지정하면 4바이트면 되기 때문에 그런 것 같습니다. 날짜 계산을 해야 하는 경우는 별로 바람직하지 못한 판단입니다. 하여간 이런 경우 입력받은 자료가 유효한 날짜 에 대한 정보인지 어떻게 판단할 수 있을까요?

날짜에 합당한 값인가 아닌가를 구분하는 함수는 IsDate() 함수입니다.
          사용법은 IsDate([값]) 입니다.

그리고 ‘20020101’을 ‘2002-01-01’로 나타내려면 Format()함수를 이용합니다.
          Format( 20020101, “0000-00-00” ) => 2002-01-02

만약 필드가 [사용일자]이라면 이 필드의 입력값을 검사하고자 하는 표현식을 만들어 본다면 다음과 같을 겁니다.
          IsDate(Format([사용일자], “0000-00-00”))

그러나 필드의 유효성 검사에서는 필드를 참조할 수 없으므로 이런 경우는 필드의 유효성 검사 규칙에 값을 테스트할 식을 사용할 방법이 없습니다.
따라서 레코드 수준의 유효성 검사를 이용합니다.
테이블의 속성창을 불러내고 유효성 검사규칙에 위 표현식을 그대로 적용합니다.

그러나 이러한 불편함을 감수하려고 하지 마시고 적절한 데이터 형식을 사용하는 것이 좋을 겁니다.

다음 강좌에서는 자료를 수집하는 방법으로 조회 필드의 운영에 대해 말씀 드릴까 합니다.
 

  목차 | 이전 | 다음