Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-模块/函数/VBA

窗体和报表常用表达式示例

时 间: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交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助