窗体和报表常用表达式示例
时 间:2020-07-15 11:45:24
作 者:宏鹏 ID:21115 城市:上海
摘 要:本节中的表提供在窗体或报表中控件内计算值的表达式示例。
正 文:
本节中的表提供在窗体或报表中控件内计算值的表达式示例。
文本操作
下表中的表达式使用 &(& 号)和 +(加号)运算符来组合文本字符串、内置函数以操纵文本字符串,或操作文本以创建计算控件。
表达式 |
结果 |
---|---|
="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 控件日期值之间的时间间隔。 |
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access快速开发平台--对上传...(11.22)
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)
- Access系统自带的日期选择器不...(11.08)