本节中的表提供在窗体或报表中控件内计算值的表达式示例。
文本操作
下表中的表达式使用 &(& 号)和 +(加号)运算符来组合文本字符串、内置函数以操纵文本字符串,或操作文本以创建计算控件。
表达式
|
结果
|
="N/A"
|
显示 N/A。
|
=[FirstName] & " " & [LastName]
|
显示名为 FirstName 和 LastName 的表字段中的值。 此示例中,使用了 & 运算符来组合 FirstName 字段、空格字符(括在引号内)和 LastName 字段。
|
= Left([ProductName], 1)
|
使用 Left 函数显示名为 ProductName 的字段或控件中值的第一个字符。
|
= Right([AssetCode], 2)
|
使用 Right 函数显示名为 AssetCode 的字段或控件中值的最后 2 个字符。
|
=Trim([Address])
|
使用 Trim 函数显示 Address 控件的值,删除所有前导或尾随空格。
|
=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode])
|
使用 IIf 函数,如果 Region 控件中的值为 null,则显示 City 和 PostalCode 控件的值;否则显示 City、Region 和 PostalCode 控件的值(用空格分隔)。
|
=[City] & (" " + [Region]) & " " & [PostalCode]
|
使用 + 运算符和 null 传播,如果 Region 控件中的值为 null,则显示 City 和 PostalCode 字段或控件的值;否则显示 City、Region 和 PostalCode 字段或控件的值(用空格分隔)。
Null 传播意味着如果表达式的任何组件为 null,则整个表达式也为 null。 + 运算符支持 null 传播;而 & 运算符不支持。
|
页眉和页脚
使用 Page 和 Pages 在窗体或报表中显示或打印页码。 Page 和 Pages 属性仅在打印或打印预览时可用,因此不显示于窗体或报表的属性表中。 通常情况下,在窗体或报表的页眉或页脚部分放置文本框,然后使用如下表所示的表达式,即可使用这些属性。
有关在窗体和报表中使用页眉和页脚的详细信息,请参阅在窗体或报表中插入页码一文。
表达式
|
结果
|
=[Page]
|
1
|
="Page " & [Page]
|
第 1 页
|
="Page " & [Page] & " of " & [Pages]
|
Page 1 of 3
|
=[Page] & " of " & [Pages] & " Pages"
|
1 of 3 Pages
|
=[Page] & "/" & [Pages] & " Pages"
|
1/3 Pages
|
=[Country/region] & " - " & [Page]
|
UK - 1
|
= Format([Page],"000")
|
001
|
="Printed on: " & Date()
|
打印时间:17/12/31
|
算数运算
可使用表达式对两个或更多字段或控件中的值进行加减乘除运算。 可以使用表达式对日期执行算术运算。 例如,假设有名为 RequiredDate 的日期/时间表字段。 在该字段或绑定到该字段的控件中,表达式 =[RequiredDate] - 2 返回 RequiredDate 字段中的当前值的两天前所对应的日期/时间值。
表达式
|
结果
|
=[Subtotal]+[Freight]
|
Subtotal 和 Freight 字段或控件值的和。
|
=[RequiredDate]-[ShippedDate]
|
RequiredDate 和 ShippedDate 字段或控件日期值之间的时间间隔。
|
=[Price]*1.06
|
Price 字段或控件的值与 1.06 的积(Price 值增加 6%)。
|
=[Quantity]*[Price]
|
Quantity 和 Price 字段或控件值的积。
|
=[EmployeeTotal]/[CountryRegionTotal]
|
EmployeeTotal 和 CountryRegionTotal 字段或控件值的商。
|
注意 在表达式中使用算术运算符(+、-、* 和 /)时,如果表达式中某一控件的值为 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 中第 3 列的值。 (请注意,0 指第 1 列,1 指第 2 列,依此类推)。
|
=Forms![Orders]![Orders Subform]![Price] * 1.06
|
Orders 窗体名为 orders Subform 的子窗体中 Price 控件的值与 1.06 的积(Price 控件的值增加 6%)。
|
=Parent![OrderID]
|
当前子窗体的主窗体或父窗体中 orderID 控件的值。
|
下表中的表达式展示了在报表上使用计算控件的一些方法。 这些表达式引用报表属性。
表达式
|
结果
|
=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 控件值之和所得的销售额百分比。
如果将该控件的“格式”属性设置为“百分比”,请勿在表达式中包含 *100。
|
SQL 聚合函数
需要选择性求和或计数时,请使用名为 SQL 或域聚合函数的函数类型。 “域”包含一个或多个表中的一个或多个字段,或一个或多个窗体或报表上的一个或多个控件。 例如,可将表字段中的值与窗体控件中的值进行匹配。
表达式
|
说明
|
=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms("Suppliers")("[SupplierID]"))
|
使用 DLookup 函数返回 Suppliers 表中这样的 ContactName 字段的值,其所对应 SupplierID 字段的值与 Suppliers 窗体中 SupplierID 控件的值相匹配。
|
=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms![New Suppliers]![SupplierID])
|
使用 DLookup 函数返回 Suppliers 表中这样的 ContactName 字段的值,其所对应 SupplierID 字段的值与 New Suppliers 窗体中 SupplierID 控件的值相匹配。
|
=DSum("[OrderAmount]", "[Orders]", "[CustomerID] = 'RATTC'")
|
使用 DSum 函数返回 orders 窗体中 CustomerID 为 RATTC 的 orderAmount 字段中值的总计。
|
=DCount("[Retired]","[Assets]","[Retired]=Yes")
|
使用 DCount 函数返回 Assets 表中 Retired 字段(Yes/No 字段)中 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 函数传递 3 个参数:第 1 个参数是必定返回 True 或 False 值的表达式。 第 2 个参数是该表达式为 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 则显示空字符串;否则显示 Country/region 控件的值。
|
=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode])
|
使用 IIf 和 IsNull 函数,如果 Region 控件中的值为 null,则显示 City 和 PostalCode 控件的值;否则显示 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”;否则显示 RequiredDate 和 ShippedDate 控件日期值之间的时间间隔。
|