배움터  
  HOME > 배움터 > 무료강좌
무료강좌
 
액세스 2000, 김규경님의 데이터베이스 기초 다지기 - 16강. 식의 작성 (4) – 여러 가지 식의 예제, Access 2000
  


16강. 식의 작성 (4) – 여러 가지 식의 예제

Microsoft Access에서는 계산 컨트롤, 쿼리, 필터 기준, 기본값, 유효성 검사 규칙, 매크로 기준 작성 등 많은 연산에 식을 사용합니다. 만들려는 식과 비슷한 예제를 찾은 다음 원하는 대로 수정하면 쉽게 식을 만들 수 있습니다.

폼, 보고서, 데이터 액세스 페이지에서 사용되는 식 예제
쿼리와 필터에서 자료추출을 위해 사용하는 식 예제
계산 필드에서 사용하는 식 예제
업데이트 쿼리의 식 예제
SQL 문에서 사용하는 식 예제
기본값 식 예제
매크로 조건식 예제

 
폼, 보고서, 데이터 액세스 페이지에서 사용되는 식 예제

날짜 조작 및 계산 예제

다음 표는 폼, 보고서, 데이터 액세스 페이지에서 계산 컨트롤에 사용할 수 있는 식의 예제입니다.

설 명

=Date()

Date 함수를 사용하여 yyyy-mm-dd와 같은 형식으로 현재 날짜를 표시

=Format(Now(), "ww")

Format 함수를 사용하여 현재 날짜가 그 해의 몇 번째 주에 해당하는지 표시

=DatePart("yyyy", [OrderDate])

DatePart 함수를 사용하여 OrderDate 필드 값의 연도를 네 자리 숫자로 표시

=DateAdd("y", -10, [PromisedDate])

DateAdd 함수를 사용하여 PromisedDate 필드 값의 10일 전 날짜를 표시

=DateDiff("d", [OrderDate], [ShippedDate])

DateDiff 함수를 사용하여 OrderDate와 ShippedDate 필드 값의 차이를 표시

텍스트 값 조작 예제

다음 표는 폼, 보고서, 데이터 액세스 페이지에서 계산 컨트롤에 사용할 수 있는 식의 예제입니다.

설 명

="N/A"

N/A 라고 표시

=[FirstName]&" "&[LastName]

FirstName과 LastName 필드 값을 공백으로 구분하여 표시

=Left([ProductName], 1)

Left 함수를 사용하여 ProductName 필드 값의 첫 글자를 표시

=Right([AssetCode], 2)

Right 함수를 사용하여 AssetCode 필드 값의 마지막 두 글자를 표시

=Trim([Address])

Trim 함수로 Address 필드 값에 앞뒤 공백이 있으면 공백을 없애고 표시

=IIf(IsNull([Region]),[City]&" "& [PostalCode],[City]&" "&[Region]&" "& [PostalCode])

IIf 함수를 사용하여 Region이 Null이면 City 및 PostalCode 필드 값을 표시하고, Null이 아니면 City, Region, PostalCode 필드 값을 공백으로 구분하여 표시

참고]

• 계산 컨트롤의 컨트롤 원본/Control Source 속성을 사용할 때는 식 앞에 = 연산자가 사용됩니다. 데이터 액세스 페이지에서는 = 연산자를 생략하고 대신 다음과 같이 별칭을 사용할 수 있습니다.

        FullName: [FirstName] & " " & [LastName]

• 폼이나 보고서에서 계산 컨트롤의 이름/Name 속성을 설정하거나 데이터 액세스 페이지에서 계산 컨트롤의 ID 속성을 설정할 때는 고유한 이름을 사용해야 합니다. 식에서 사용했던 컨트롤 이름이나 ID는 사용할 수 없습니다.

• 폼이나 보고서의 식에서 원본으로 사용하는 레코드 원본에 있는 컨트롤 이름이나 필드 이름을 사용할 수 있습니다. 그러나 데이터 액세스 페이지의 식에서는 페이지의 데이터 정의에 있는 필드 이름만 사용할 수 있습니다.

산술 연산 조작 예제

다음 표는 폼, 보고서, 데이터 액세스 페이지에서 계산 컨트롤에 사용할 수 있는 식의 예제입니다.

설 명

=[Subtotal] + [Freight]

Subtotal과 Freight 필드 값의 합계를 표시

=[RequiredDate] - [ShippedDate]

RequiredDate와 ShippedDate 필드 값의 차이를 표시

=[Price] * 1.06

Price 필드 값에 1.06을 곱한 값을 표시

=[Quantity] * [Price]

Quantity와 Price 필드를 곱한 값을 표시

=[EmployeeTotal] / [CountryTotal]

EmployeeTotal을 CountryTotal 필드로 나눈 값 표시

 
참고] 식에서 산술 연산자(+, -, *, /)를 사용하는 경우, 식에 Null 값을 갖는 컨트롤이 하나라도 있으면 전체 식의 결과는 Null이 됩니다. 폼이나 보고서의 식에서 사용한 컨트롤의 레코드에 Null 값이 있으면 다음과 같이 Nz 함수를 사용하여 Null 값을 0으로 변환할 수 있습니다.
   =Msodsc.Nz([Subtotal]) + Msodsc.Nz([Freight])

IIF 조건식 예제

IIF(Inline IF) 조건식 예제입니다. ‘InLine IF’ 함수(IIF)는 뜻 그대로 조건문을 한줄로 쓰고자 할 때 사용하는 함수입니다. 많이 사용하므로 꼭 사용법을 익히시도록 하십시오.

참고] Iif 함수

기능
        식을 평가한 결과에 따라 두 개의 값 중에서 하나를 반환합니다.

구문
        IIf(expr, TruePart, FalsePart)
        IIf(표현식, 표현식이 참일 때 값, 표현식이 거짓일 때 값)

구성요소 설 명

expr

필수적인 요소. 평가하고자 하는 식

TruePart

필수적인 요소. expr이 True인 경우 반환하는 값이나 식입니다.

FalsePart

필수적인 요소. expr이 False인 경우 반환하는 값이나 식입니다.

주의]
VBA에 대해 모르는 초보자에게는 조금 어려운 얘기지만 iif()함수는 if~else~end if 구문과는 조금 다릅니다.
If ~ Else ~ End If 구문에서는 일단 참 또는 거짓 값 중 해당되는 부분만을 확인합니다. 따라서 조건문이 참이면 참값에 해당되는 부분만 평가하므로 거짓값에 해당되는 문장에 오류가 있어도 오류를 발생하지 않고 지나갑니다.
그러나 Iif() 함수는 expr를 분석하여 truepart나 falsepart중 하나를 반환하는 것은 IF 구문과 동일하지만 값을 반환할 때 truepart와 falsepart 두 부분의 값/식이 모두 올바른가 확인을 하고 반환합니다. 따라서 예상치 않은
상황이 나올 수 있으므로 주의해야 합니다.
예를 들면, iif() 함수에서 expr이 True로 평가되어 TruePart부분의 값을 반환할 때 FalsePart 부분도 같이 분석을 하기 때문에 FalsePart의 계산 결과가 올바르기 못하면 TruePart 부분에 문제가 없더라도 오류가 발생합니다. 이 경우 참일 때 참값을 돌려주는 상황에서 발생했다는 생각에 사로잡히면 오류의 이유를 모르고 헤멜 수 있는 일이 벌어집니다.

다음 표는 폼, 보고서, 데이터 액세스 페이지에서 계산 컨트롤에 사용할 수 있는 식의 예제입니다.

=IIf([Confirmed] = "Yes", "결재", "미결")

IIf 함수를 사용하여 Confirmed 필드 값이 "Yes"이면 "결재" 메시지를 표시하고, 아니면 "미결" 메시지를 표시합니다.

=IIf(IsNull([Country])," ", [Country])

Country 필드 값이 Null이면 빈 문자열을 표시하고, Null이 아니면 Country 필드 값을 표시합니다.

=IIf(IsNull([요구일] - [선적일]), "날짜확인", [요구일] - [선적일])

[요구일]에서 [선적일]를 뺀 결과가 Null이면 " 날짜확인"이라는 메시지를 표시하고, Null이 아니면 [요구일] 과 [선적일] 필드 값의 차이를 표시합니다.

집계 함수 및 도메인 집계 함수의 예제

참고] 도메인 집계함수를 사용할 수 없는 경우

1) 데이터 액세스 페이지에서 집계 함수와 도메인 집계 함수를 사용할 수 없습니다.
2) Microsoft Access 프로젝트(.adp)에서 도메인 집계 함수를 사용할 수 없습니다.
3) 테이블의 유효성 검사규칙 등에서 사용할 수 없습니다.

집계 함수를 사용하는 식 예제

설 명

=Avg([Freight])

Avg 함수를 사용하여 Freight 컨트롤 값의 평균을 표시

=Count([OrderID])

Count 함수를 사용하여 OrderID 컨트롤의 레코드 개수를 표시

=Sum([Sales])

Sum 함수를 사용하여 Sales 컨트롤 값의 합계를 표시

=Sum([Quantity] * [Price])

Sum 함수를 사용하여 Quantity와 Price 컨트롤 값의 곱에 대한 합계를 표시

=[Sales] / Sum([Sales]) * 100

Sales 컨트롤 값을 전체 Sales 컨트롤 값의 합으로 나누어 판매액의 백분율을 표시

참고 컨트롤의 형식/Format 속성을 백분율/Percent로 설정한 경우에는 *100을 생략합니다.

도메인 집계 함수를 사용하는 식 예제

참고] 도메인 집계 함수의 인수는 문자열 형식으로 보내주어야 하는데 이것은 초보자를 힘들게 하는 이유가 됩니다.

=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = Forms![SupplierID]")

DLookup 함수를 사용하면 테이블의 SupplierID 필드 값이 현재 폼의 SupplierID 컨트롤 값과 일치하는 Suppliers 테이블의 ContactName 필드 값이 표시됩니다.

=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = Forms![New Suppliers]![SupplierID]")

DLookup 함수를 사용하면 Suppliers 테이블의 SuppliersID 필드 값이 New Suppliers 폼의 SupplierID 컨트롤 값과 일치하는 Suppliers 테이블의 ContactName 필드 값이 표시됩니다.

=DSum("[OrderAmount]", "[Orders]", "[CustomerID] = “RATTC”")

DSum 함수를 사용하면 CustomerID가 RATTC인 Orders 테이블의 OrderAmount 필드 값 총계가 표시됩니다.

참고] 계산컨트롤을 작성할 때 주의사항

1. 계산 컨트롤의 컨트롤 원본(Control Source) 속성을 사용할 때는 식 앞에 = 연산자가 사용됩니다.
   데이터 액세스 페이지에서는 = 연산자를 생략하고 대신 질의테이블의 계산필드와 같이
   DisplayCountry: IIf(IsNull([Country]), " ", [Country])
와 같이 별칭을 입력할 수 있습니다.

2. 폼이나 보고서에서 계산 컨트롤의 이름(Name) 속성을 설정하거나 데이터 액세스 페이지에서 계산 컨트롤의 ID 속성을 설정할 때는 고유한 이름을 사용해야 합니다. 식에서 사용했던 컨트롤 이름이나 ID는 사용할 수 없습니다. 즉, 항상 이름이나 ID는 고유하게 지어야 한다는 것입니다.

3. 폼이나 보고서의 식에서 원본으로 사용하는 레코드 원본에 있는 컨트롤 이름이나 필드 이름을 사용할 수 있습니다. 그러나 데이터 액세스 페이지의 식에서는 페이지의 데이터 정의에 있는 필드 이름만 사용할 수 있습니다.

4. 식에서 산술 연산자(+, -, *, /)를 사용하는 경우, 식에 Null 값을 갖는 컨트롤이 하나라도 있으면 전체 식의 결과는 Null이 됩니다. 폼이나 보고서의 식에서 사용한 컨트롤의 레코드에 Null 값이 있으면 다음과 같이 Nz 함수를 사용하여 Null 값을 0으로 변환할 수 있습니다.

   =Msodsc.Nz([Subtotal]) + Msodsc.Nz([Freight])
 

 
쿼리와 필터에서 자료 추출을 위해 사용하는 식 예제

값 범위(>, <, >=, <=, <>, or Between...And)

설 명

> 234

Quantity 필드에서 숫자가 234보다 큽니다.

< 1200.45

UnitPrice 필드에서 숫자가 1200.45보다 작습니다.

>= "Callahan"

LastName 필드에서 이름의 범위는 Callahan에서 알파벳 끝까지에 해당됩니다.

Between #1999/2/2# And #1999/12/1#

OrderDate 필드에서 날짜가 1999년 2월 2일에서 1999면 12월 1일까지에 해당됩니다(ANSI-89).

Between “1999/2/2” And “1999/12/1”

OrderDate 필드에서 날짜가 1999년 2월 2일에서 1999년 12월 1일까지에 해당됩니다(ANSI-92).

일치하지 않는 값 ( Not )

설 명

Not "경기도"

ShipCountry 필드에서 경기도가 아닌 다른 지역에 주문이 선적되었습니다.

Not 2

ID 필드에서 직원 번호가 2가 아닙니다.

Not 안*

LastName 필드에서 직원 성이 "안"으로 시작하지 않습니다(ANSI-89).

Not 안%

LastName 필드에서 직원 성이 "안"으로 시작하지 않습니다(ANSI-92).

목록에 있는 값 ( In )

설 명
In("경기도", "강원도") ShipCountry 필드에서 경기도나 강원도로 주문이 선적됩니다.
In(부산시, 서울시, 대구시) CountryName 필드에서 부산이나, 서울, 대구에 살고 있는 직원입니다.

텍스트, 부분, 일치하는 값

설 명

"대전시"

ShipCity 필드에서 대전시로 선적된 주문입니다.

"대전시" Or "부산시"

ShipCity 필드에서 대전시나 부산시로 선적된 주문입니다.

>="마"

CompanyName 필드에서 회사 이름이 마에서 하 사이의 문자로 시작하는 고객에게 선적된 주문입니다.

Like "신*"

ShipName 필드에서 이름이 신으로 시작하는 고객에게 선적된 주문입니다(ANSI-89).

Like "신%"

ShipName 필드에서 이름이 신으로 시작하는 고객에게 선적된 주문입니다(ANSI-92).

Right([OrderID], 2) = "99"

OrderID 필드에서 99로 끝나는 ID 값을 가지는 주문입니다.

Len([CompanyName]) > Val(30)

CompanyName 필드에서 이름이 30자 이상인 회사의 주문입니다.

일부 필드 값 (Like)

설 명
Like "신*" ShipName 필드에서 이름이 신으로 시작하는 고객에게 선적된 주문입니다(ANSI-89).
Like "신%" ShipName 필드에서 이름이 신으로 시작하는 고객에게 선적된 주문입니다(ANSI-92).
Like "*상사" ShipName 필드에서 이름이 "상사"로 끝나는 고객에게 선적된 주문입니다(ANSI-89).
Like "%상사" ShipName 필드에서 이름이 "상사"로 끝나는 고객에게 선적된 주문입니다(ANSI-92).
Like "[ㄱ-ㅁ]*" ShipName 필드에서 이름이 ㄱ에서 ㅁ으로 시작하는 고객에게 선적된 주문입니다(ANSI-89).
Like "[ㄱ-ㅁ]%" ShipName 필드에서 이름이 ㄱ에서 ㅁ으로 시작하는 고객에게 선적된 주문입니다(ANSI-92).
Like "*월드*" ShipName 필드에서 이름에 "월드"라는 단어가 들어가는 고객에게 선적된 주문입니다(ANSI-89).
Like "%월드%" ShipName 필드에서 이름에 "월드"라는 단어가 들어가는 고객에게 선적된 주문입니다(ANSI-92).
Like "경성 트레이?" ShipName 필드에서 전체 7문자 중 첫 6자가 "경성 트레이"로 시작되는 이름의 고객에게 선적된 주문입니다(ANSI-89).
Like "경성 트레이_" ShipName 필드에서 전체 7문자 중 첫 6자가 "경성 트레이"로 시작되는 이름의 고객에게 선적된 주문입니다(ANSI-92).

날짜

설 명
#2000/2/2# ShippedDate 필드에서 2000년 2월 2일에 선적된 주문입니다(ANSI-89).
“2000/2/2” ShippedDate 필드에서 2000년 2월 2일에 선적된 주문입니다(ANSI-92).
Date() RequiredDate 필드에서 오늘 날짜의 주문입니다.
Between Date( ) And DateAdd("M", 3, Date( )) RequiredDate 필드에서 오늘 날짜와 오늘 날짜에서 3개월 사이의 주문입니다.
< Date( ) - 30 OrderDate 필드에서 30일이 지난 주문입니다.
Year([OrderDate]) = 1999 OrderDate 필드에서 1999년에 주문된 주문입니다.
DatePart("q", [OrderDate]) = 4 OrderDate 필드에서 4사분기에 해당하는 주문입니다.
DateSerial(Year ([OrderDate]), Month([OrderDate]) + 1, 1) - 1 OrderDate 필드에서 각 월의 마지막 날에 해당하는 주문입니다.
Year([OrderDate]) = Year(Now()) And Month([OrderDate]) = Month(Now()) OrderDate 필드에서 현재 연도와 월에 해당하는 주문입니다.

주의] 질의문에서의 날짜형식은 “월/일/년도”와 같은 식으로 표현되도록 하십시오.

빈 필드 값(Null이나 빈 문자열)

설 명

Is Null

ShipRegion 필드에서 ShipRegion 필드가 Null (빈)인 고객의 주문입니다.

Is Not Null

ShipRegion 필드에서 ShipRegion 필드에 값이 들어 있는 고객의 주문입니다.

" "

Fax 필드에서 팩스가 없어서 Fax 필드에 Null 값(빈 값) 대신 빈 문자열 값이 지정된 고객의 주문입니다.

도메인 집계 함수의 결과

설 명

> (DStDev("[Freight]", "Orders") + DAvg("[Freight]", "Orders"))

Freight 필드에서 운송 비용이 평균과 운송 비용의 합계보다 많습니다.

>Davg("[Quantity]", "Order Details")

Quantity 필드에서 주문한 제품의 양이 평균 주문 양보다 많습니다.

조건으로서의 하위 쿼리 결과

설 명

(SELECT [UnitPrice] FROM [Products] WHERE [ProductName] = "대성 어묵")

UnitPrice 필드에서 대성 어묵 가격과 같은 가격의 제품입니다.

> (SELECT AVG([UnitPrice]) FROM [Products])

UnitPrice 필드에서 평균보다 높은 단가의 제품입니다.

> ALL (SELECT [Salary] FROM [Employees] WHERE ([Title] LIKE "*과장*") OR ([Title] LIKE "*부사장*"))

Salary 필드에서 직위가 "과장"이나 "부사장"인 직원의 급여보다 높은 급여를 받는 각 영업 사원의 급여입니다.

> ALL (SELECT AVG([UnitPrice] * [Quantity]) FROM [Order Details])

OrderTotal: [Unit Price] * [Quantity] 계산 필드에서 주문 평균보다 높은 요약을 가진 주문입니다.


 
계산 필드에서 사용하는 식 예제

텍스트 값 조작

설 명

성명: [성] & " " & [이름]

성과 이름필드의 값을 한 칸 띄어서 성명 계산필드로 표시합니다.

상품머릿글자: Left([상품명], 1)

상품명 필드의 첫 번째 문자만 가져와 상품머릿글자 계산필드를 표시합니다.

지역코드: Mid([전화번호], 2, 3)

전화번호 필드의 값 중에서 두 번째 문자로 시작하는 세 문자를 지역코드 계산필드에서 표시합니다.

산술 연산 수행

설 명

PrimeFreight: [Freight] * 1.1

PrimeFreight 필드에서 운송비에 10%를 추가한 값을 표시합니다.

OrderAmount: [Quantity] * [UnitPrice]

OrderAmount 필드에서 Quantity와 UnitPrice 필드 값을 곱한 값을 표시합니다.

LeadTime: [RequiredDate] - [ShippedDate]

LeadTime 필드에서 RequiredDate 필드와 ShippedDate 필드의 차이 값을 표시합니다.

TotalStock: [UnitsInStock] + [UnitsOnOrder]

TotalStock 필드에서 UnitsInStock 필드와 UnitsOnOrder 필드 값의 합계를 표시합니다.

FreightPercentage: Sum([Freight]) / Sum([Subtotal]) * 100

FreightPercentage 필드에서 Freight 필드 값의 합계를 Subtotal 필드 값의 합계로 나누어 각 부분합에서 운송비의 백분율을 표시합니다.

디자인 눈금의 요약 행이 표시되어야 하며 이 필드의 요약 셀이 식으로 설정되어야 합니다.

필드의 형식 속성이 백분율로 설정되어 있으면 *100은 포함하지 않습니다.

SumofUnits: Nz([UnitsInStock], 0) + Nz([UnitsOnOrder], 0)

SumofUnits 필드에서 모든 재고 단위 수량과 수주량의 합계가 표시됩니다.

식에서 산술 연산자(+, -, *, /)를 사용하고 필드 가운데 하나가 Null이면 전체 식의 결과는 Null이 됩니다. 식에서 쓰이는 필드 가운데 어떤 레코드가 Null 값이 될 것으로 예상되면 Nz함수를 사용하여 Null 값을 0으로 바꿉니다.
예를 들면, 다음과 같습니다.

참고] 디자인 눈금에 요약 행이 표시되도록 하려면 질의디자인모드에서 메뉴중 시그마 표시의 메뉴를 눌러주어야 합니다.

날짜 조작과 계산

설 명

LagTime: DateDiff("d", [OrderDate], [ShippedDate])

LagTime 필드에서 주문 날짜와 선적 날짜 사이의 숫자를 표시합니다.

YearHired: DatePart("yyyy", [HireDate])

YearHired 필드에서 직원을 고용한 연도를 표시합니다.

MonthNo: DatePart("M", [OrderDate])

MonthNo 필드에서 월 숫자를 표시합니다.

PriorDate: Date( ) - 30

PriorDate 필드에서 현재 날짜 30일 이전의 날짜를 표시합니다.

SQL과 도메인 집계 함수 사용

설 명

Count(*)

쿼리에서 Null(빈) 필드가 있는 레코드를 포함하여 레코드 수를 계산하는 Count 함수를 사용합니다.

FreightPercentage: Sum([Freight]) / Sum([Subtotal]) * 100

FreightPercentage 필드에서 Freight 필드 값의 합계를 Subtotal 필드 값의 합계로 나누어 각 부분합에서 운송비의 백분율을 표시합니다.

디자인 눈금의 요약 행이 표시되어야 하며 이 필드의 요약 셀이 으로 설정되어야 합니다.

필드의 형식 속성이 백분율로 설정되어 있으면 *100은 포함하지 않습니다.

AverageFreight: DAvg("[Freight]", "[Orders]")

AverageFreight 필드에서 요약 쿼리에서 결합된 모든 주문에 주어진 평균 값을 표시합니다.

Null 값 사용

설 명

CurrentCountry: IIf(IsNull([Country]), " ", [Country])

CurrentCountry 필드에서 Country 필드가 Null인 경우 빈 문자열을 표시합니다. Null이 아닌 경우 Country 필드의 내용을 표시합니다.

LeadTime: IIf(IsNull([RequiredDate] - [ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate])

RequiredDate 필드 값이나 ShippedDate 필드 값이 Null이면
LeadTime 필드에 "Check for a missing date"라는 메시지를 표시합니다. 이 함수를 사용하지 않으면 두 필드 간의 차이가 나타납니다.

SixMonthSales: Nz([Qtr1Sales], 0) + Nz([Qtr2Sales], 0)

SixMonthSales 필드에 1/4분기와 2/4분기의 sales 필드를 결합한 요약의 값을 표시하고 Nz 함수를 사용하여 먼저 Null 값을 0으로 바꿉니다.

하위 쿼리 사용

설 명

Category: (SELECT [CategoryName] FROM [Categories] WHERE [Products].[CategoryID] = [Categories].[CategoryID])

Category 필드에서 Categories 테이블의 CategoryID가 Products 테이블의 CategoryID와 같으면
CategoryName을 표시합니다.


 
업데이트 쿼리의 식 예제

업데이트할 필드에 대해 쿼리 디자인 눈금의 업데이트 셀에서 다음 식을 사용합니다.

설 명

"영업 사원"

텍스트 값을 영업 사원으로 변경합니다.

#99/8/10#

날짜 값을 1999년 8월 10일로 변경합니다.

예/아니오 필드의 아니오 값을 예로 고칩니다.

"PN" & [PartNumber]

지정된 부품 번호 앞에 PN을 추가합니다.

[UnitPrice] * [Quantity]

UnitPrice와 Quantity를 곱합니다.

[Freight] * 1.5

운임을 50% 늘립니다.

DSum("[Quantity] * [UnitPrice]", "Order Details", "[ProductID]=" & [ProductID])

현재 테이블의 ProductID가 Order Details 테이블의 ProductID와 같을 때 UnitPrice와 Quantity의 곱에 근거하여 판매 합계를 업데이트합니다.

Right([ShipPostalCode], 5)

가장 오른쪽 문자를 다섯 글자 남겨두고 가장 왼쪽 문자를 자릅니다.

IIf(IsNull([UnitPrice]), 0, [UnitPrice])

UnitPrice 필드에서 Null 값을 0으로 바꿉니다.

 
SQL 문에서 사용하는 식 예제

다음 예제에서 볼 수 있듯이 SQL 문에서 식을 여러 가지 방식으로 사용할 수 있습니다. 굵게 표시된 부분이 식입니다.

설 명
SELECT [FirstName], [LastName] FROM [Employees] WHERE [LastName] = "Davolio"; 직위가 영업 사원인 직원의 FirstName 필드와 LastName 필드를 표시합니다.
SELECT [ProductID], [ProductName] FROM [Products] WHERE [CategoryID] = Forms![New Products]![CategoryID]; 열려 있는 New Products 폼에서 지정된 CategoryID(제품 분류) 값과 일치하는 CategoryID 값이 들어 있는 Products 테이블 레코드의 ProductID(제품 번호) 필드 값과 ProductName(제품 이름) 필드 값을 표시합니다.
SELECT Avg([ExtendedPrice]) AS [Average Extended Price] FROM [Order Details Extended] WHERE [ExtendedPrice] > 1000; Average Extended Price 필드에서 ExtendedPrice 필드 값이 1,000 이상인 주문의 평균 확장 가격을 표시합니다.
SELECT [CategoryID],Count([ProductID]) AS [CountOfProductID]
FROM [Products] GROUP BY [CategoryID] HAVING Count([ProductID]) > 10;
CountOfProductID 필드에 10개 이상의 제품을 가진 제품 종류별로 각 종류에 들어 있는 제품 총 개수를 표시합니다.

 
기본값 식 예제

다음 예제는 필드의 기본값 속성에서 식을 사용하는 방법입니다.

설 명

1

1

"MT"

MT

"New York, N.Y."

New York, N.Y. 값에 구두점이 포함되면 반드시 따옴표로 묶어야 합니다.

" "

빈 문자열

Date( )

오늘 날짜

=Yes

컴퓨터 로컬 언어에 표시된 Yes를 나타냅니다.

 
매크로 조건식 예제

True/False나 Yes/No를 산출하는 식을 매크로 조건에서 사용할 수도 있습니다. 조건이 True나 Yes를 산출할
경우 매크로가 실행됩니다.

팁]
매크로 함수를 잠시 무시하려면 조건에 False를 입력합니다. 매크로의 문제를 확인할 때는 매크로 함수를 잠시 무시하는 것이 편리합니다.

설 명

[City]="서울특별시"

매크로를 실행하는 폼의 필드에 있는 City(도시명) 값이 서울특별시입니다.

DCount("[OrderID]", "Orders")>35

Orders 테이블에 있는 OrderID(주문 번호) 필드에 항목이 36개 이상 있습니다.

DCount("*", "Order Details", "[OrderID]=Forms![Orders]![OrderID]")>3

Orders 폼의 OrderID 필드에 대응하는 Order Details 테이블의 OrderID 필드에 항목이 4개 이상 있습니다.

[ShippedDate] Between #2001-02-02# And #2001-03-02#

매크로를 실행하는 폼의 ShippedDate 필드 값이 2001-02-02에서 2001-03-02 사이에 있습니다.

Forms![Products]![UnitsInStock]<5

Products 폼의 UnitsInStock 필드 값이 5보다 작습니다.

IsNull([FirstName])

매크로를 실행하는 폼의 FirstName 값이 Null(값이 없음)입니다.
이 식은 [FirstName] Is Null과 같습니다.

[Region]="경기도" And Forms![SalesTotals]![TotalOrds]>100

매크로를 실행하는 폼의 Region 필드 값이 경기도이고, SalesTotals 폼의 TotalOrds 필드 값이 100보다 작습니다.

[Region] In("경기도", "강원도", "제주도") And Len([PostalCode])<>5

매크로를 실행하는 폼의 Region 필드 값이 경기도, 강원도, 제주도 중의 하나이고, 우편 번호는 다섯 자리가 아닙니다.

MsgBox("Confirm changes?",1)=1

MsgBox 함수 대화 상자에서 확인을 클릭하면 "Confirm changes?"라는 메시지가 나옵니다. 대화 상자에서 취소를 클릭하면 매크로 함수가 무시됩니다.

 

 

  목차 | 이전 | 다음