이 문서에서는 Access 식의 많은 예제를 제공합니다. 식은 단일 값으로 계산되는 수학적 또는 논리적 연산자, 상수, 함수, 테이블 필드, 컨트롤 및 속성의 조합입니다. Access 식을 사용하여 값을 계산하고, 데이터의 유효성을 검사하고, 기본값을 설정할 수 있습니다.
이 문서의 내용
양식 및 보고서
이 섹션의 테이블은 폼 또는 보고서에 있는 컨트롤 값을 계산하는 식 예제를 제공합니다. 계산된 컨트롤을 만들려면 테이블 필드나 쿼리 대신 컨트롤의 ControlSource 속성에 식을 입력합니다.
참고 조건부 서식을 사용하여 데이터를 강조 표시할 때 폼 또는 보고서에 식을 사용할 수도 있습니다.
텍스트 작업
다음 표의 식은 &(앰퍼샌드) 및 +(더하기) 연산자를 사용하여 텍스트 문자열을 결합하고, 기본 제공 함수를 통해 텍스트 문자열을 조작하거나 달리 텍스트에 대한 연산을 수행하여 계산된 컨트롤을 만듭니다.
식 |
결과 |
---|---|
="N/A" |
N/A를 표시합니다. |
=[FirstName] & " " & [LastName] |
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 컨트롤 값을 공백으로 구분하여 표시합니다. |
=[City] & (" " + [Region]) & " " & [PostalCode] |
+ 연산자와 null 전파를 사용하여 Region 필드 또는 컨트롤 값이 null이면 City 및 PostalCode 컨트롤 값을 표시하고, null이 아니면 City, Region 및 PostalCode 필드 또는 컨트롤 값을 공백으로 구분하여 표시합니다. Null 전파는 식에 null인 구성 요소가 하나라도 있을 경우 전체 식도 null이 됨을 의미합니다. + 연산자는 null 전파를 지원하고 </c0> 연산자는 지원하지 않습니다. |
머리글 및 바닥글
Page 및 Pages 속성을 사용하여 폼 또는 보고서에 페이지 번호를 표시하거나 인쇄합니다. Page 및 Pages 속성은 인쇄 또는 인쇄 미리 보기 중에만 사용할 수 있으므로 폼 또는 보고서에 대한 속성 시트에는 표시되지 않습니다. 일반적으로 폼이나 보고서의 머리글 또는 바닥글 섹션에 텍스트 상자를 배치하고 다음 표와 같은 식을 통해 이러한 속성을 사용합니다.
폼 및 보고서에서 머리글과 바닥글을 사용하는 방법에 대한 자세한 내용은 폼 또는 보고서에 페이지 번호 삽입 문서를 참조하세요.
식 |
결과 |
---|---|
=[Page] |
1 |
="Page " & [Page] |
1페이지 |
="Page " & [Page] & " of " & [Pages] |
1/3페이지 |
=[Page] & " of " & [Pages] & " Pages" |
1/3페이지 |
=[Page] & "/" & [Pages] & " Pages" |
1/3페이지 |
=[Country/region] & " - " & [Page] |
UK - 1 |
=Format([Page], "000") |
001 |
="Printed on: " & Date() |
Printed on: 12/31/17 |
산술 연산
식을 사용하여 둘 이상의 필드 또는 컨트롤에서 값의 더하기, 빼기, 곱하기 및 나누기 연산을 수행할 수 있습니다. 식을 사용하여 날짜에 대한 산술 연산을 수행할 수도 있습니다. 예를 들어, RequiredDate이라는 날짜/시간 테이블 필드가 있다고 가정합니다. 필드 또는 필드에 바인딩된 컨트롤에서 식=[RequiredDate] - 2은 RequiredDate 필드의 현재 값보다 2일 전인 날짜/시간 값을 반환합니다.
식 |
결과 |
---|---|
=[Subtotal]+[Freight] |
Subtotal 및 Freight 필드 또는 컨트롤 값의 합계입니다. |
=[RequiredDate]-[ShippedDate] |
RequiredDate 및 ShippedDate 필드 또는 컨트롤의 날짜 값 간격입니다. |
=[Price]*1.06 |
Price 필드 또는 컨트롤 값에 1.06(Price 값에 6%를 더한 값)을 곱한 값입니다. |
=[Quantity]*[Price] |
Quantity 및 Price 필드 또는 컨트롤 값을 곱한 값입니다. |
=[EmployeeTotal]/[CountryRegionTotal] |
EmployeeTotal 및 CountryRegionTotal 필드 또는 컨트롤 값의 몫입니다. |
참고 식에서 산술 연산자(+, -, *, and /)를 사용하고 식의 컨트롤 중 하나의 값이 null이면 전체 식의 결과도 null이 됩니다. 이를 Null 전파라고 합니다. 식에 사용하는 컨트롤 중 하나에 null 값을 가진 레코드가 있을 수 있으면 Nz 함수를 통해 null 값을 0으로 변환하여 Null 전파를 방지할 수 있습니다 - 예:=Nz([Subtotal])+Nz([Freight])
다른 컨트롤의 값
간혹 다른 폼 또는 보고서의 필드나 컨트롤 등 다른 위치에 있는 값이 필요한 경우도 있습니다. 식을 사용하여 다른 필드 또는 컨트롤의 값을 반환할 수 있습니다.
다음의 표에는 폼의 계산된 컨트롤에서 사용할 수 있는 식의 예제가 열거되어 있습니다.
식 |
결과 |
---|---|
=Forms![Orders]![OrderID] |
Orders 폼의 OrderID 컨트롤 값입니다. |
=Forms![Orders]![Orders Subform].Form![OrderSubtotal] |
Orders 폼의 Orders Subform 하위 폼에 있는 OrderSubtotal 컨트롤 값입니다. |
=Forms![Orders]![Orders Subform]![ProductID].Column(2) |
Orders 폼의 Orders Subform 하위 폼에 있는 다중 열 목록 상자인 ProductID에서 세 번째 열의 값입니다. 0은 첫 번째 열을 참조하고, 1은 두 번째 열을 참조합니다. |
=Forms![Orders]![Orders Subform]![Price] * 1.06 |
Orders 폼의 Orders Subform 하위 폼에 있는 Price 컨트롤 값에 1.06(Price 컨트롤 값에 6%를 더한 값)을 곱한 값입니다. |
=Parent![OrderID] |
현재 하위 폼의 기본 폼이나 부모 폼에 있는 OrderID 컨트롤 값입니다. |
다음의 표의 식은 보고서에서 계산된 컨트롤을 사용하는 몇 가지 방법을 보여 줍니다. 식은 Report 속성을 참조합니다.
식 |
결과 |
---|---|
=Report![Invoice]![OrderID] |
"Invoice" 보고서의 "OrderID" 컨트롤 값입니다. |
=Report![Summary]![Summary Subreport]![SalesTotal] |
Summary 보고서의 Summary Subreport 하위 보고서에 있는 SalesTotal 컨트롤 값입니다. |
=Parent![OrderID] |
현재 하위 보고서의 기본 보고서나 부모 보고서에 있는 OrderID 컨트롤 값입니다. |
값의 개수, 합계 및 평균 계산
집계 함수라는 함수 유형을 사용하여 하나 이상의 필드 또는 컨트롤 값을 계산할 수 있습니다. 예를 들어 보고서의 그룹 바닥글에 대한 그룹 합계 또는 폼의 개별 항목에 대한 주문 소계를 계산할 수 있습니다. 하나 이상의 필드에 있는 항목 수를 계산하거나 평균 값을 계산할 수도 있습니다.
다음의 표의 식은 Avg, Count, Sum 등의 함수를 사용하는 몇 가지 방법을 보여 줍니다.
식 |
설명 |
---|---|
=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을 포함하지 않습니다. |
집계 함수를 사용하고 필드 및 열의 값을 합산하는 방법에 대한 자세한 내용은 쿼리를 사용하여 데이터 합계 계산, 쿼리를 사용하여 데이터 개수 계산, 요약 행을 사용하여 데이터시트에 열 합계 표시 및 데이터시트에 열 합계 표시 문서를 참조합니다.
SQL 집계 함수
선택적으로 값의 합계나 개수를 계산해야 하는 경우 SQL 혹은 도메인 집계 함수라는 함수 유형을 사용합니다. "도메인"은 하나 이상의 테이블에 있는 하나 이상의 필드 또는 하나 이상의 폼 또는 보고서에 있는 하나 이상의 컨트롤로 구성됩니다. 예를 들어, 테이블 필드의 값을 폼의 컨트롤 값과 일치시킬 수 있습니다.
식 |
설명 |
---|---|
=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms("Suppliers")("[SupplierID]")) |
DLookup 함수를 사용하여 테이블의 SupplierID 필드 값이 Suppliers 폼의 SupplierID 컨트롤 값과 일치하는 Suppliers 테이블의 ContactName 필드 값을 반환합니다. |
=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms![New Suppliers]![SupplierID]) |
DLookup 함수를 사용하여 테이블의 SupplierID 필드 값이 New Suppliers 폼의 SupplierID 컨트롤 값과 일치하는 Suppliers 테이블의 ContactName 필드 값을 반환합니다. |
=DSum("[OrderAmount]", "[Orders]", "[CustomerID] = 'RATTC'") |
DSum 함수를 사용하여 CustomerID가 RATTC인 Orders 테이블의 OrderAmount 필드 값의 합계를 반환합니다. |
=DCount("[Retired]","[Assets]","[Retired]=Yes") |
DCount 함수를 사용하여 Assets 테이블의 Retired 필드(예/아니요 필드)에 있는 Yes 값의 개수를 반환합니다. |
날짜 작업
날짜 및 시간 추적은 기본적인 데이터베이스 작업입니다. 예를 들어 송장 날짜 이후의 경과 일수를 계산하여 수취 계정의 사용 기간을 구할 수 있습니다. 다음 표와 같이 다양한 방법으로 날짜 및 시간 서식을 지정할 수 있습니다.
식 |
설명 |
---|---|
=Date() |
Date 함수를 사용하여 현재 날짜를 mm-dd-yy 형식으로 표시합니다. 여기서 mm은 달(1-12)이고, dd는 날짜 (1-31)이고, yy는 연도(1980-2099)의 마지막 두 자리 숫자입니다. |
=Format(Now(), "ww") |
Format 함수를 사용하여 현재 날짜에 따른 해당 연도의 주 번호를 표시하며 여기서 ww는 1-53주를 나타냅니다. |
=DatePart("yyyy", [OrderDate]) |
DatePart 함수를 사용하여 OrderDate 컨트롤 값의 네 자리 연도를 표시합니다. |
=DateAdd("y", -10, [PromisedDate]) |
DateAdd 함수를 사용하여 PromisedDate 컨트롤 값보다 10일 전인 날짜를 표시합니다. |
=DateDiff("d", [OrderDate], [ShippedDate]) |
DateDiff 함수를 사용하여 OrderDate 및 ShippedDate 컨트롤 값 사이의 일수 차이를 표시합니다. |
=[InvoiceDate] + 30 |
날짜에 산술 연산을 사용하여 InvoiceDate 필드 또는 컨트롤의 날짜보다 30일 후인 날짜를 계산합니다. |
두 개의 값만 사용한 조건
다음 표의 예제 식은 IIf 함수를 사용하여 가능한 두 값 중 하나를 반환합니다. IIf 함수에 다음의 세 개의 인수를 전달합니다: 첫 번째 인수는 True 혹은 False 값을 반환해야 하는 식입니다. 두 번째 인수는 식이 true일 경우 반환할 값이고, 세 번째 인수는 식이 false일 경우 반환할 값입니다.
식 |
설명 |
---|---|
=IIf([Confirmed] = "Yes", "Order Confirmed", "Order Not Confirmed") |
IIf(Immediate If) 함수를 사용하여 Confirmed 컨트롤 값이 Yes이면 "Order Confirmed" 메시지를 표시하고, 그렇지 않으면 "Order Not Confirmed." 메시지를 표시합니다. |
=IIf(IsNull([Country/region]), " ", [Country]) |
IIf 및 IsNull 함수를 사용하여 Country/region 컨트롤 값이 null이면 빈 문자열을 표시하고, null이 아니면 Country/region 컨트롤 값을 표시합니다. |
=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode]) |
IIf 및 IsNull 함수를 사용하여 Region 컨트롤 값이 null이면 City 및 PostalCode 컨트롤 값을 표시하고, null이 아니면 City, Region 및 PostalCode 필드 또는 컨트롤 값을 표시합니다. |
=IIf(IsNull([RequiredDate]) Or IsNull([ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate]) |
IIf 및 IsNull 함수를 사용하여 RequiredDate에서 ShippedDate를 뺀 결과가 null이면 "Check for a missing date" 메시지를 표시하고, null이 아니면 RequiredDate 및 ShippedDate 컨트롤의 날짜 값 간격을 표시합니다. |
쿼리 및 필터
이 섹션에는 쿼리에서 계산된 필드를 만들거나 쿼리에 조건을 제공하는데 사용할 수 있는 식의 예제가 포함되어 있습니다. 계산된 필드는 식의 결과로 생성된 쿼리의 열입니다. 예를 들어 값을 계산하거나, 이름과 성 등의 텍스트 값을 결합하거나, 날짜의 일부에 서식을 지정할 수 있습니다.
쿼리에 조건을 사용하여 작업할 레코드를 제한합니다. 예를 들어, Between 연산자를 사용하여 시작 및 종료 날짜를 제공하고 해당 날짜 사이에 운송된 주문으로 쿼리 결과를 제한할 수 있습니다.
다음은 쿼리에 사용할 식의 예제입니다.
텍스트 작업
다음 표의 식은 & 및 + 연산자를 사용하여 텍스트 문자열을 결합하고, 기본 제공 함수를 통해 텍스트 문자열에 대한 연산을 수행하거나 텍스트에 대한 연산을 수행하여 계산된 컨트롤을 만듭니다.
식 |
설명 |
---|---|
FullName: [FirstName] & " " & [LastName] |
FirstName 및 LastName 필드 값을 공백으로 구분하여 표시하는 FullName 필드를 만듭니다. |
Address2: [City] & " " & [Region] & " " & [PostalCode] |
City, Region 및 PostalCode 필드 값을 공백으로 구분하여 표시하는 Address2라는 필드를 만듭니다. |
ProductInitial: Left([ProductName], 1) |
ProductInitial 필드를 만든 다음 Left 함수를 사용하여 ProductName 필드 값의 첫 문자를 ProductInitial 필드에 표시합니다. |
TypeCode: Right([AssetCode], 2) |
TypeCode라는 필드를 만든 다음 Right 함수를 사용하여 AssetCode 필드 값의 마지막 두 문자를 표시합니다. |
AreaCode: Mid([Phone],2,3) |
AreaCode라는 필드를 만든 다음 Mid 함수를 사용하여 Phone 필드 값의 두 번째 문자부터 세 문자를 표시합니다. |
ExtendedPrice: CCur([Order Details].[Unit Price]*[Quantity]*(1-[Discount])/100)*100 |
계산된 필드의 이름을 ExtendedPrice로 지정하고 CCur 함수를 사용하여 적용된 할인으로 라인 항목 합계를 계산합니다. |
산술 연산
식을 사용하여 둘 이상의 필드 또는 컨트롤에서 값의 더하기, 빼기, 곱하기 및 나누기 연산을 수행할 수 있습니다. 날짜에 대한 산술 연산을 수행할 수도 있습니다. 예를 들어 RequiredDate이라는 날짜/시간 필드가 있다고 가정합니다. 식 =[RequiredDate] - 2은 RequiredDate 필드 값보다 2일 전인 날짜/시간 값을 반환합니다.
식 |
설명 |
---|---|
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 필드를 만든 다음 각 소계에 운송료의 백분율을 표시합니다. 이 식은 Sum 함수를 사용하여 Freight 필드 값의 합계를 계산한 다음 해당 합계를 Subtotal 필드의 값 합계로 나눕니다. 이 식을 사용하려면 디자인 눈금의 요약을 사용해야 하므로 선택 쿼리를 요약 쿼리로 변환해야 하며, 이 필드의 요약 셀을 식으로 설정해야 합니다. 요약 쿼리를 만드는 방법에 대한 자세한 내용은 쿼리를 사용하여 데이터 합계 계산 문서를 참조하세요. 필드의 Format 속성을 Percent로 설정한 경우에는 *100을 포함하지 마세요. |
집계 함수를 사용하고 필드 및 열의 값을 합산하는 방법에 대한 자세한 내용은 쿼리를 사용하여 데이터 합계 계산, 쿼리를 사용하여 데이터 개수 계산, 요약 행을 사용하여 데이터시트에 열 합계 표시 및 데이터시트에 열 합계 표시 문서를 참조합니다.
날짜 작업
대부분의 데이터베이스는 날짜 및 시간을 저장하고 추적합니다. 테이블의 날짜 및 시간 필드를 날짜/시간 데이터 형식으로 설정하여 Access에서 날짜 및 시간 작업을 합니다. Access에서는 날짜에 대한 산술 연산을 수행할 수 있습니다. 예를 들어 송장 날짜 이후의 경과 일수를 계산하여 수취 계정의 사용 기간을 구할 수 있습니다.
식 |
설명 |
---|---|
LagTime: DateDiff("d", [OrderDate], [ShippedDate]) |
LagTime라는 필드를 만든 다음 DateDiff 함수를 사용하여 주문 날짜와 운송 날짜 사이의 일수 차이를 표시합니다. |
YearHired: DatePart("yyyy",[HireDate]) |
YearHired라는 필드를 만든 다음 DatePart 함수를 사용하여 각 직원이 고용된 연도를 표시합니다. |
MinusThirty: Date( )- 30 |
MinusThirty라는 필드를 만든 다음 Date 함수를 사용하여 현재 날짜보다 30일 전인 날짜를 표시합니다. |
SQL 집계 함수
다음의 표의 식은 데이터를 집계하거나 요약하는 SQL(구조적 쿼리 언어) 함수를 사용합니다. 종종 이러한 집계 함수(예: Sum, Count 및 Avg)라는 함수를 접하게 됩니다.
집계 함수뿐만 아니라 Access에서는 선택적으로 값의 합계나 개수를 계산하는 데 사용하는 "도메인" 집계 함수도 제공합니다. 예를 들어 특정 범위 내의 값 개수만 계산하거나 다른 테이블의 값을 조회할 수 있습니다. 도메인 집계 함수 집합에는 DSum 함수, DCount 함수 및 DAvg 함수가 포함됩니다.
합계를 계산하려면 대체로 요약 쿼리를 만들어야 합니다. 예를 들어 그룹별로 요약하려면 요약 쿼리를 사용해야 합니다. 쿼리 디자인 눈금에서 요약 쿼리를 사용하도록 설정하려면 보기 메뉴에서 요약을 클릭합니다.
식 |
설명 |
---|---|
RowCount: Count(*) |
RowCount라는 필드를 만든 다음 Count 함수를 통해 null(공백) 필드가 있는 레코드를 포함하여 쿼리의 레코드 수를 계산합니다. |
FreightPercentage: Sum([Freight])/Sum([Subtotal]) *100 |
FreightPercentage라는 필드를 만든 다음 Freight 필드 값의 합계를 Subtotal 필드 값의 합계로 나누어 각 소계의 운송료 백분율을 계산합니다. (이 예제에서는 Sum 함수를 사용합니다.) 이 식을 요약 쿼리에 사용해야 합니다. 필드의 Format 속성을 Percent로 설정한 경우에는 *100을 포함하지 않습니다. 요약 쿼리를 만드는 방법에 대한 자세한 내용은 쿼리를 사용하여 데이터 합계 계산 문서를 참조하세요. |
AverageFreight: DAvg("[Freight]", "[Orders]") |
AverageFreight라는 필드를 만든 다음 DAvg 함수를 사용하여 요약 쿼리에 결합된 모든 주문에 대한 평균 운송료를 계산합니다. |
누락된 데이터가 있는 필드
여기에 표시된 식은 null(알 수 없거나 정의되지 않은) 값을 포함하는 필드 등 잠정적으로 누락된 정보가 있는 필드를 사용합니다. 알 수 없는 신제품 가격, 동료가 잊고 주문에 추가하지 않은 값 등 null 값을 발견하는 경우가 많습니다. null 값을 찾아서 처리하는 기능은 데이터베이스 작업의 중요한 부분일 수 있으며, 다음 표의 식은 null 값을 처리하는 몇 가지 일반적인 방법을 보여 줍니다.
식 |
설명 |
---|---|
CurrentCountryRegion: IIf(IsNull([CountryRegion]), " ", [CountryRegion]) |
CurrentCountryRegion 필드를 만든 다음 IIf 및 IsNull 함수를 사용하여 CountryRegion 필드 값이 null이면 해당 필드에 빈 문자열을 표시하고, null이 아니면 CountryRegion 필드 내용을 표시합니다. |
LeadTime: IIf(IsNull([RequiredDate] - [ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate]) |
LeadTime 필드를 만든 다음 IIf 및 IsNull 함수를 사용하여 RequiredDate 필드 또는 ShippedDate 필드 값이 null이면 "Check for a missing date" 메시지를 표시하고, null이 아니면 날짜 차이를 표시합니다. |
SixMonthSales: Nz([Qtr1Sales]) + Nz([Qtr2Sales]) |
SixMonthSales라는 필드를 만든 다음 먼저 Nz 함수를 통해 null 값을 모두 0으로 변환하여 Qtr1Sales 및 Qtr2Sales 필드 값의 합계를 표시합니다. |
하위 쿼리를 사용한 계산 필드
하위 쿼리라고도 하는 중첩된 쿼리를 사용하여 계산된 필드를 만들 수 있습니다. 다음 표의 식은 하위 쿼리의 결과로 생성되는 계산된 필드의 한 가지 예입니다.
식 |
설명 |
---|---|
Cat: (SELECT [CategoryName] FROM [Categories] WHERE [Products].[CategoryID]=[Categories].[CategoryID]) |
Cat이라는 필드를 만든 다음 Categories 테이블의 CategoryID가 Products 테이블의 CategoryID와 같으면 CategoryName을 표시합니다. |
텍스트 값 일치
이 표의 샘플 식은 텍스트 값 전체 또는 일부와 일치하는 조건을 보여줍니다.
필드 |
식 |
설명 |
---|---|---|
ShipCity |
"London" |
London으로 운송된 주문을 표시합니다. |
ShipCity |
"London" Or "Hedge End" |
Or 연산자를 사용하여 London 또는 Hedge End로 운송된 주문을 표시합니다. |
ShipCountryRegion |
In("Canada", "UK") |
In 연산자를 사용하여 Canada 또는 UK로 운송된 주문을 표시합니다. |
ShipCountryRegion |
Not "USA" |
Not 연산자를 사용하여 USA 이외의 국가/지역으로 운송된 주문을 표시합니다. |
ProductName |
Not Like "C*" |
Not 연산자 및 * 와일드카드 문자를 사용하여 이름이 C로 시작하지 않는 제품을 표시합니다. |
CompanyName |
>="N" |
이름이 문자 N-Z로 시작하는 회사로 운송된 주문을 표시합니다. |
ProductCode |
Right([ProductCode], 2)="99" |
Right 함수를 사용하여 ProductCode 값이 99로 끝나는 주문을 표시합니다. |
ShipName |
Like "S*" |
이름이 문자 S로 시작하는 고객에게 운송된 주문을 표시합니다. |
날짜 조건 일치
다음의 표의 식은 조건식에서 날짜 및 관련 함수를 사용하는 방법을 보여 줍니다. 날짜 값을 입력 및 사용하는 방법에 대한 자세한 내용은 날짜 및 시간 필드 형식 지정 문서를 참조합니다.
필드 |
식 |
설명 |
---|---|---|
ShippedDate |
#2/2/2017# |
2017년 2월 2일 운송된 주문을 표시합니다. |
ShippedDate |
Date() |
오늘 운송된 주문을 표시합니다. |
RequiredDate |
Between Date( ) And DateAdd("m", 3, Date( )) |
Between...And 연산자와 DateAdd 및 Date 함수를 사용하여 오늘 날짜와 오늘 날짜에서 3개월 후 사이에 필요한 주문을 표시합니다. |
OrderDate |
< Date( ) - 30 |
Date 함수를 사용하여 30일보다 오래된 주문을 표시합니다. |
OrderDate |
Year([OrderDate])=2017 |
Year 함수를 사용하여 주문 날짜가 2017년인 주문을 표시합니다. |
OrderDate |
DatePart("q", [OrderDate])=4 |
DatePart 함수를 사용하여 4사분기의 주문을 표시합니다. |
OrderDate |
DateSerial(Year ([OrderDate]), Month([OrderDate])+1, 1)-1 |
DateSerial, Year 및 Month 함수를 사용하여 각 월의 마지막 날 주문을 표시합니다. |
OrderDate |
Year([OrderDate])= Year(Now()) And Month([OrderDate])= Month(Now()) |
Year 및 Month 함수와 And 연산자를 사용하여 현재 연도와 월의 주문을 표시합니다. |
ShippedDate |
Between #1/5/2017# And #1/10/2017# |
Between...And 연산자를 사용하여 5-Jan-2017과 10-Jan-2017 사이에 운송된 주문을 표시합니다. |
RequiredDate |
Between Date( ) And DateAdd("M", 3, Date( )) |
Between...And 연산자를 사용하여 오늘 날짜와 오늘 날짜에서 3개월 후 사이에 필요한 주문을 표시합니다. |
BirthDate |
Month([BirthDate])=Month(Date()) |
Month 및 Date 함수를 사용하여 이번 달에 생일이 있는 직원을 표시합니다. |
누락된 데이터 찾기
다음의 표의 식은 잠정적으로 누락된 정보가 있는 필드(null 값 또는 길이가 0인 문자열을 포함하는 필드)를 포함하여 작업합니다. null 값은 정보가 없음을 나타내며 0이나 다른 어떠한 값도 나타내지 않습니다. 누락된 정보 개념은 데이터베이스 무결성에 중요하므로 Access에서는 이 개념을 지원합니다. 현실 세계에서는 비록 일시적이라 해도 정보가 누락되는 경우가 많습니다(예: 아직 확정되지 않은 신제품 가격). 따라서 비즈니스 등의 실제 엔티티를 모델링하는 데이터베이스는 정보를 누락으로 기록할 수 있어야 합니다. IsNull 함수를 사용하여 필드 또는 컨트롤 값이 null인지 확인하고, Nz 함수를 사용하여 null 값을 0으로 변환할 수 있습니다.
필드 |
식 |
설명 |
---|---|---|
ShipRegion |
Is Null |
ShipRegion 필드가 null(누락)인 고객의 주문을 표시합니다. |
ShipRegion |
Is Not Null |
ShipRegion 필드에 값이 있는 고객의 주문을 표시합니다. |
Fax |
"" |
null(누락) 값 대신 Fax 필드에 길이가 0인 문자열 값이 포함된 팩스가 없는 고객의 주문을 표시합니다. |
Like를 사용한 레코드 패턴 일치
Like를 와일드카드 문자를 함께 사용하여 Access에서 일치시킬 패턴을 정의할 수 있으므로 Like 연산자는 패턴을 따르는 행을 일치시키는 경우에 탁월한 유연성을 제공합니다. 예를 들어, * (별표) 와일드카드 문자는 모든 유형의 문자 시퀀스와 일치하며, 특정 문자로 시작하는 모든 이름을 쉽게 찾을 수 있게 합니다. 예를 들어, 식 Like "S*"을 사용하여 S로 시작하는 모든 이름을 찾습니다. 자세한 내용은 문서 Like 연산자를 참조합니다.
필드 |
식 |
설명 |
---|---|---|
ShipName |
Like "S*" |
ShipName 필드에서 문자 S로 시작하는 모든 레코드를 찾습니다. |
ShipName |
Like "*Imports" |
ShipName 필드에서 단어 "Imports"로 끝나는 모든 레코드를 찾습니다. |
ShipName |
Like "[A-D]*" |
ShipName 필드에서 문자 A, B, C, 또는 D로 시작하는 모든 레코드를 찾습니다. |
ShipName |
Like "*ar*" |
ShipName 필드에서 문자 시퀀스 "ar"이 포함된 모든 레코드를 찾습니다. |
ShipName |
Like "대양 마말레이?" |
ShipName 필드에서 값의 첫 번째 부분에 "Maison"이 포함되며, 처음 네 문자가 "Dewe"이고 마지막 문자를 알 수 없는 5자 문자열이 포함된 모든 레코드를 찾습니다. |
ShipName |
Not Like "A*" |
ShipName 필드에서 문자 A로 시작하지 않는 모든 레코드를 찾습니다. |
SQL 집계를 사용하여 행 일치
선택적으로 값의 합계, 개수 또는 평균을 계산해야 하는 경우 SQL 혹은 도메인 집계 함수를 사용합니다. 예를 들어, 특정 범위 내에 있거나 Yes로 평가되는 값의 개수만 계산할 수 있습니다. 다른 테이블의 값을 표시할 수 있도록 조회해야 하는 경우도 있습니다. 다음 표의 샘플 식은 도메인 집계 함수를 사용하여 일련의 값에 대한 계산을 수행하고 그 결과를 쿼리 조건으로 사용합니다.
필드 |
식 |
설명 |
---|---|---|
화물 운송비 |
> (DStDev("[Freight]", "Orders") + DAvg("[Freight]", "Orders")) |
DStDev 및 DAvg 함수를 사용하여 운송료가 평균값에 운송료의 표준 편차를 더한 값보다 높은 모든 주문을 표시합니다. |
수량 |
> DAvg("[Quantity]", "[Order Details]") |
DAvg 함수를 사용하여 평균 주문량보다 많은 수량으로 주문된 제품을 표시합니다. |
하위 쿼리를 사용하여 필드 일치
중첩된 쿼리라고도 하는 하위 쿼리를 사용하여 조건으로 사용할 값을 계산합니다. 다음 표의 샘플 식은 하위 쿼리에서 반환된 결과에 기반하여 행을 일치시킵니다.
필드 |
식 |
표시 |
---|---|---|
UnitPrice |
(SELECT [UnitPrice] FROM [Products] WHERE [ProductName] = "Aniseed Syrup") |
가격이 Aniseed Syrup의 가격과 같은 제품입니다. |
UnitPrice |
>(SELECT AVG([UnitPrice]) FROM [Products]) |
단가가 평균보다 높은 제품입니다. |
Salary |
> ALL (SELECT [Salary] FROM [Employees] WHERE ([Title] LIKE "*Manager*") OR ([Title] LIKE "*Vice President*")) |
직책이 "Manager" 또는 "Vice President"인 모든 직원의 급여보다 급여가 높은 모든 판매 담당자의 급여입니다. |
OrderTotal: [UnitPrice] * [Quantity] |
> (SELECT AVG([UnitPrice] * [Quantity]) FROM [Order Details]) |
합계가 평균 주문 값보다 높은 주문입니다. |
쿼리 업데이트
업데이트 쿼리를 사용하여 데이터베이스에 있는 하나 이상의 기존 필드 데이터를 수정합니다. 예를 들어 값을 바꾸거나 완전히 삭제할 수 있습니다. 이 표에서는 업데이트 쿼리에서 식을 사용하는 몇 가지 방법을 보여 줍니다. 업데이트할 필드의 쿼리 디자인 눈금의 업데이트 행에서 이러한 식을 사용합니다.
업데이트 쿼리를 만드는 방법에 대한 자세한 내용은 업데이트 쿼리 만들기 및 실행 문서를 참조합니다.
필드 |
식 |
결과 |
---|---|---|
표제 |
"Salesperson" |
텍스트 값을 Salesperson으로 변경합니다. |
ProjectStart |
#8/10/17# |
날짜 값을 10-Aug-17로 변경합니다. |
은퇴함 |
Yes |
예/아니요 필드의 No 값을 Yes로 변경합니다. |
PartNumber |
"PN" & [PartNumber] |
지정된 각 부품 번호의 시작 부분에 PN을 추가합니다. |
LineItemTotal |
[UnitPrice] * [Quantity] |
UnitPrice와 Quantity를 곱한 값을 계산합니다. |
Freight |
[Freight] * 1.5 |
운송료를 50% 늘립니다. |
판매 |
DSum("[Quantity] * [UnitPrice]", "Order Details", "[ProductID]=" & [ProductID]) |
현재 테이블의 ProductID 값이 Order Details 테이블의 ProductID 값과 일치하는 경우 Quantity와 UnitPrice를 곱한 값에 따라 매출 합계를 업데이트합니다. |
ShipPostalCode |
Right([ShipPostalCode], 5) |
맨 오른쪽의 5자를 남겨두고 맨 왼쪽의 문자를 잘라냅니다. |
UnitPrice |
Nz([UnitPrice]) |
UnitPrice 필드의 null(정의되지 않았거나 알 수 없는) 값을 0으로 변경합니다. |
SQL 문
구조적 쿼리 언어 혹은 SQL은 Access에서 사용하는 쿼리 언어입니다. 쿼리 디자인 보기에서 만든 모든 쿼리는 SQL을 통해서도 표현할 수 있습니다. 쿼리에 대한 SQL 문을 보려면 보기 메뉴에서 SQL 보기를 클릭합니다. 다음의 표에서는 식을 사용하는 샘플 SQL 문을 보여줍니다.
식을 사용하는 SQL 문 |
결과 |
---|---|
SELECT [FirstName],[LastName] FROM [Employees] WHERE [LastName]="Danseglio"; |
성이 Danseglio인 직원의 FirstName 및 LastName 필드 값을 표시합니다. |
SELECT [ProductID],[ProductName] FROM [Products] WHERE [CategoryID]=Forms![New Products]![CategoryID]; |
CategoryID 값이 열려 있는 New Products 폼에서 지정된 CategoryID 값과 일치하는 레코드에 대한 Products 테이블의 ProductID 및 ProductName 필드 값을 표시합니다. |
SELECT Avg([ExtendedPrice]) AS [Average Extended Price] FROM [Order Details Extended] WHERE [ExtendedPrice]>1000; |
ExtendedPrice 필드 값이 1000보다 큰 주문의 평균 총 금액을 계산하고 Average Extended Price 필드에 표시합니다. |
SELECT [CategoryID], Count([ProductID]) AS [CountOfProductID] FROM [Products] GROUP BY [CategoryID] HAVING Count([ProductID])>10; |
CountOfProductID라는 이름의 필드에 포함된 제품이 10개를 초과하는 범주의 총 제품 수를 표시합니다. |
테이블 식
테이블에 식을 사용하는 가장 일반적인 두 가지 방법은 기본값을 할당하고 유효성 검사 규칙을 만드는 것입니다.
필드 기본값
데이터베이스를 디자인하는 경우 필드 또는 컨트롤에 기본값을 할당하는 것이 좋습니다. 그러면 필드가 포함된 새 레코드를 만들거나 컨트롤이 포함된 개체를 만들 때 Access에서 기본값을 제공합니다. 다음의 표의 식은 필드 또는 컨트롤의 샘플 기본값을 나타냅니다. 컨트롤이 테이블의 필드에 바인딩되었으며 필드에 기본값이 있는 경우 컨트롤의 기본값이 우선적으로 적용됩니다.
필드 |
식 |
기본 필드 값 |
---|---|---|
수량 |
1 |
1 |
지역 |
"MT" |
MT |
Region |
"New York, N.Y." |
New York, N.Y. 구두점을 포함하는 경우 값을 따옴표로 묶어야 합니다. |
Fax |
"" |
기본적으로 이 필드는 null 값을 포함하는 대신 비어 있어야 함을 나타내는 길이가 0인 문자열 |
주문 날짜 |
Date( ) |
오늘 날짜 |
DueDate |
Date() + 60 |
오늘부터 60일 후의 날짜 |
필드 유효성 검사 규칙
식을 사용하여 필드 또는 컨트롤에 대한 유효성 검사 규칙을 만들 수 있습니다. 그러면 필드 또는 컨트롤에 데이터를 입력할 때 Access에서 규칙을 적용합니다. 유효성 검사 규칙을 만들려면 필드 또는 컨트롤의 ValidationRule 속성을 수정합니다. 유효성 검사 규칙을 위반할 때 Access에서 표시되는 텍스트를 포함하는 ValidationText 속성도 설정하는 것이 좋습니다. ValidationText 속성을 설정하지 않으면 Access는 기본 오류 메시지를 표시합니다.
다음의 표의 예시에서는 ValidationRule 속성에 대한 유효성 검사 규칙 식과 ValidationText 속성에 대한 관련 텍스트를 보여 줍니다.
ValidationRule 속성 |
ValidationText 속성 |
---|---|
<> 0 |
0이 아닌 값을 입력하세요. |
0 Or > 100 |
값은 0이거나 또는 100 이상이어야 합니다. |
Like "K???" |
값은 문자 K로 시작하는 4자여야 합니다. |
< #1/1/2017# |
1/1/2017 이전의 날짜를 입력하세요. |
>= #1/1/2017# And < #1/1/2008# |
2017년의 날짜를 입력해야 합니다. |
데이터 유효성을 검사하는 방법에 대한 자세한 내용은 필드의 데이터 유효성을 검사하는 유효성 검사 규칙 만들기 문서를 참조합니다.
매크로 식
특정 조건에 맞을 경우 한 가지 함수 또는 매크로 함수를 수행하려는 경우가 있을 수 있습니다. 예를 들어, Counter 텍스트 상자의 값이 10인 경우에만 실행하려는 함수가 있다고 가정합니다. 식을 사용하여 If 블록에서 조건을 정의합니다.
[Counter]=10
ValidationRule 속성과 마찬가지로 If 블록의 식은 조건식입니다. True or False 값으로 해결해야 합니다. 조건이 true인 경우에만 함수가 실행됩니다.
함수를 실행하는 데 사용할 식 |
If |
---|---|
[City]="Paris" |
Paris는 매크로가 실행된 폼에 있는 필드의 City 값입니다. |
DCount("[OrderID]", "Orders") > 35 |
Orders 테이블의 OrderID 필드에 있는 항목 수가 35개를 초과합니다. |
DCount("*", "[Order Details]", "[OrderID]=" & Forms![Orders]![OrderID]) > 3 |
테이블의 OrderID 필드가 Orders 폼의 OrderID 필드와 일치하는 Order Details 테이블의 항목이 3개를 초과합니다. |
[ShippedDate] Between #2-Feb-2017# And #2-Mar-2017# |
매크로가 실행된 폼의 ShippedDate 필드 값이 2-Feb-2017에서 2-Mar-2017 사이입니다. |
Forms![Products]![UnitsInStock] < 5 |
Products 폼의 UnitsInStock 필드 값이 5보다 작습니다. |
IsNull([FirstName]) |
매크로가 실행된 폼의 FirstName 값이 null입니다(값 없음). 이 식은 [FirstName] Is Null과 같습니다. |
[CountryRegion]="UK" And Forms![SalesTotals]![TotalOrds] > 100 |
매크로가 실행된 폼의 CountryRegion 필드 값이 UK이고, SalesTotals 폼의 TotalOrds 필드 값이 100보다 큽니다. |
[CountryRegion] In ("France", "Italy", "Spain") And Len([PostalCode])<>5 |
매크로가 실행된 폼의 CountryRegion 필드 값이 France, Italy 또는 Spain 중 하나이고, 우편 번호가 5자가 아닙니다. |
MsgBox("Confirm changes?",1)=1 |
MsgBox 함수가 표시하는 대화 상자에서 확인을 클릭합니다. 대화 상자에서 취소를 클릭하면 Access는 함수를 무시합니다. |