Access 2003完整教程:查询和筛选中所用表达式的示例

用于检索记录的条件示例

取值范围(>、<、>=、<=、<> 或 Between...And)

表达式结果
> 234对于“数量”字段,大于 234 的数字
< 1200.45对于“单价”字段,小于 1200.45 的数字
>= "Callahan"对于“姓氏”字段,从 Callahan 直至字母表结尾的所有姓氏
Between #2/2/1999# And #12/1/1999#对于“订货日期”字段,1999 年 2 月 2 日至 1999 年 12 月 1 日之间的日期 (ANSI-89)
Between '2/2/1999' And '12/1/1999'对于“订货日期”字段,1999 年 2 月 2 日至 1999 年 12 月 1 日之间的日期 (ANSI-92)

不匹配的值 (Not)

表达式结果
Not "美国"对于“货主国家/地区”字段,已发货给美国以外国家/地区的订单
Not 2对于 ID 字段,其 ID 不等于 2 的雇员
Not T*对于“姓氏”字段,其姓氏不以字母“T”开头的雇员 (ANSI-89)
Not T%对于“姓氏”字段,其姓氏不以字母“T”开头的雇员 (ANSI-92)

列表值 (In)

表达式结果
In("加拿大", "英国")对于“货主国家/地区”字段,已发货给加拿大或英国的订单
In(法国, 德国, 日本)对于“国家/地区名称”字段,居住在法国或德国或日本的雇员

文本、部分和匹配值

表达式结果
"伦敦"对于“发货城市”字段,已发货给伦敦的订单
"伦敦" Or "休斯敦"对于“发货城市”字段,已发货给伦敦或休斯敦的订单
>="N"对于“公司名称”字段,已发货给其名称以字母 N 到 Z 开头的公司的订单
Like "S*"对于“发货名称”字段,已发货给其名称以字母 S 开头的客户的订单 (ANSI-89)
Like "S%"对于“发货名称”字段,已发货给其名称以 S 开头的客户的订单 (ANSI-92)
Right([订单 ID], 2) = "99"对于“订单 ID”字段,其 ID 值以 99 结尾的订单
Len([公司名]) > Val(30)对于“公司名称”字段,其名称超过 30 个字符的公司的订单

字段的部分值 (Like)

表达式结果
Like "S*"对于“发货名称”字段,已发货给其名称以字母 S 开头的客户的订单 (ANSI-89)
Like "S%"对于“发货名称”字段,已发货给其名称以字母 S 开头的客户的订单 (ANSI-92)
Like "*Imports"对于“发货名称”字段,已发货给其名称以词“Imports”结尾的客户的订单 (ANSI-89)
Like "%Imports"对于“发货名称”字段,已发货给其名称以词“Imports”结尾的客户的订单 (ANSI-92)
Like "[A-D]*"对于“发货名称”字段,已发货给其名称以 A 至 D 开头的客户的订单 (ANSI-89)
Like "[A-D]%"对于“发货名称”字段,已发货给其名称以 A 至 D 开头的客户的订单 (ANSI-92)
Like "*ar*"对于“发货名称”字段,已发货给其名称包括字母序列“ar”的客户的订单 (ANSI-89)
Like "%ar%"对于“发货名称”字段,已发货给其名称包括字母序列“ar”的客户的订单 (ANSI-92)
Like "Maison Dewe?"对于“发货名称”字段,已发货给客户的订单,其客户名称以“Maison”作为名称的第一部分,并具有五个字母长的第二名称,且其中前四个字母是“Dewe”而最后的字母为未知的 (ANSI-89)
Like "Maison Dewe_"对于“发货名称”字段,已发货给客户的订单,其客户名称以“Maison”作为名称的第一部分,并具有五个字母长的第二名称,且其中前四个字母是“Dewe”而最后的字母为未知的 (ANSI-92)

日期

表达式结果
#2/2/2000#对于“发货日期”字段,于 2000 年 2 月 2 日发货的订单 (ANSI-89)
'2/2/2000'?对于“发货日期”字段,于 2000 年 2 月 2 日发货的订单 (ANSI-92)
Date()对于“到货日期”字段,日期为今天的订单
Between Date( ) And DateAdd("M", 3, Date( ))对于“到货日期”字段,到货日期为今天至从今天起三个月之间的订单
< Date( )- 30对于“订货日期”字段,已超过 30 天的订单
Year([订货日期]) = 1999对于“订货日期”字段,订货日期在 1999 年内的订单
DatePart("q", [订货日期]) = 4对于“订货日期”字段,日期为第四季度的订单
DateSerial(Year ([订货日期]), Month([订货日期]) + 1, 1) - 1对于“订货日期”字段,日期为每月最后一天的订单
Year([订货日期]) = Year(Now()) And? Month([订货日期]) = Month(Now())对于“订货日期”字段,日期为当年当月的订单

空字段的值(Null或零长度字符串)

表达式结果
Is Null对于“发货地区”字段,客户的“发货地区”字段为Null(空)的订单
Is Not Null对于“发货区域”字段,其“发货”字段包含值的客户的订单
" "对于“传真”字段,显示没有传真机的客户的订单,用“传真”字段中的零长度字符串值而不是 Null(空)值来表明。

域聚合函数的结果

表达式结果
> (DStDev("[运费]", "订单") + DAvg("[运费]", "订单"))对于“运费”字段,运费大于平均值与运费标准偏差之和的订单
>DAvg("[单位数量]", "订单明细")对于“单位数量”字段,其订购数量高于平均订单数量的产品

作为条件的子查询结果

表达式结果
(SELECT [单价] FROM [产品] WHERE [产品名称] = "Aniseed Syrup")对于“单价”字段,其价格与 Aniseed Syrup 的价格相同的产品
> (SELECT AVG([单价]) FROM [产品])对于“单价”字段,其单价高于平均价的产品
> ALL (SELECT [工资] FROM [雇员] WHERE ([头衔] LIKE "*经理*") OR ([头衔] LIKE "*副总裁*"))对于“工资”字段,选择其工资高于所有具有“经理”头衔或“副总裁”头衔的雇员工资的每个销售代表的工资
> ALL (SELECT AVG([单价] * [单位数量]) FROM [订单明细])对于 OrderTotal: [单价] * [单位数量]计算字段,其总计大于平均订单值的订单

计算字段所用的表达式示例

处理文本值

表达式结果
全名: [名字] & " " & [姓氏]在“全名”中显示“名字”字段和“姓氏”字段的值,中间用空格分隔。
地址2: [城市] & " " & [地区] & " " & [邮编]在“地址2”字段中显示“城市”、“地区”和“邮编”字段的值,用空格分隔。
ProductInitial: Left([产品名], 1)在 ProductInitial 字段中显示“产品名”字段中值的第一个字符
TypeCode: Right([AssetCode], 2)在 TypeCode 字段中显示 AssetCode 字段中值的后两个字符
AreaCode: Mid([Phone], 2, 3)在 AreaCode 字段中,显示自 Phone 字段中值的第二个字符起的头三个字符

执行算术运算

表达式结果
PrimeFreight: [运费] * 1.1在 PrimeFreight 字段中显示外加 10 个百分点的运费。
订购量: [单位数量] * [单价]在“订购量”字段中显示“单位数量”与“单价”相乘的积
交付周期: [到货日期] - [发货日期]在“交付周期”字段中显示“到货日期”字段值与“发货日期”字段值之差
TotalStock: [UnitsInStock] + [UnitsOnOrder]在 TotalStock 字段中显示 UnitsInStock 字段值与 UnitsOnOrder 字段值的和
运费百分比: Sum([运费])/Sum([小计]) *100在“运费百分比”字段中显示每一小计中货物运费的百分比,用“运费”字段的数值总和除以“小计”字段的数值总和。

必须显示设计网格中的“总计”行,而且该字段的“总计”单元格必须设为“表达式”。

如果该字段的“格式”属性设为“百分比”,请勿包括 *100。

SumofUnits: Nz([股票量], 0) + Nz([订单量], 0)在 SumofUnits 字段中显示所有股票和订单的数量总和。

如果在表达式中使用算术运算符(+、-、*、/),且表达式中某一字段的值为Null,则整个表达式的结果将变成Null。例如,如果在使用的表达式中,某一字段的部分记录具有Null值,可以利用Nz函数将Null值转换为零。

操作和计算日期

表达式结果
时间间隔: DateDiff("d", [订货日期], [发货日期])在“时间间隔”字段中显示订货日期与发货日期之间的天数
受雇年份: DatePart("yyyy", [雇佣日期])在“受雇年份”字段中显示每个雇员的受雇年份
MonthNo: DatePart("M",? [订货日期])在 MonthNo 字段中显示月份
PriorDate: Date( ) - 30在 PriorDate 字段中显示在当前日期之前 30 天的日期

使用 SQL 和域聚合函数

表达式结果
Count(*)使用Count函数计算查询中的记录数,包含具有Null(空)字段的记录
运费百分比: Sum([运费])/Sum([小计]) *100在“运费百分比”字段中显示每一小计中货物运费的百分比,用“运费”字段的数值总和除以“小计”字段的数值总和。

必须在设计网格中显示“总计”行,而且该字段的“总计”单元格必须设为“表达式”。

如果该字段的“格式”属性设为“百分比”,请勿包括 *100。

AverageFreight: DAvg("[运费]", "[订单]")在 AverageFreight 字段中,显示合并在一个总计查询中的所有记录给出的平均折扣

使用Null

表达式结果
CurrentCountry: IIf(IsNull([国家/地区]), " ", [国家/地区])如果“国家/地区”字段值为Null,则在 CurrentCountry 字段中显示空字符串,否则显示“国家/地区”字段的值。
交付周期: IIf(IsNull([到货日期] - [发货日期]), "请检查丢失的日期", [到货日期] - [发货日期])如果“到货日期”或“发货日期”字段的值为Null,则在“交付周期”字段中显示“请检查丢失的日期”信息,否则,将显示差值
SixMonthSales: Nz([Qtr1Sales], 0) + Nz([Qtr2Sales], 0)先使用Nz函数将Null值转换为零,然后在 SixMonthSales 字段中显示第一季和第二季组合销售字段的总计。

使用子查询

表达式结果
类别: (SELECT [类别名] FROM [类别] WHERE [产品].[类别 ID] = [类别].[类别 ID])如果“类别”表的“类别 ID”与“产品”表的“类别 ID”相同,则在“类别”字段中显示“类别名”。

在更新查询中使用的表达式示例

对要更新的字段,请在查询设计网格中的“更新到”单元格上使用下列表达式:

表达式结果
"Saleperson"将文本值改为 Salesperson
#8/10/99#将日期值改为 10-Aug-99
将“是/否”字段中的“否”数值改为“是”
"PN" & [PartNumber]将“PN”添加到每个指定部件编号的开头
[单价] * [数量]计算“单价”和“数量”的乘积
[运货费] * 1.5增加百分之五十的“运货费”金额
DSum("[数量] * [单价]",
"订单明细", "[产品ID]=" &? [产品ID])
当前表中的“产品ID”与“订单明细”表中的“产品ID”匹配时,会根据“单价”和“数量”的乘积更新销售总额
Right([ShipPostalCode], 5)截掉最左侧的几个字符,只留最右侧的五个字符
IIf(IsNull([单价]), 0, [单价])在“单价”字段中将Null值改为零 (0)

在 SQL 语句中使用的表达式示例

可以在SQL 语句中的许多地方使用表达式,如下列示例所示。表达式以加粗文本显示。

表达式结果
SELECT [名字], [姓氏] FROM [雇员] WHERE[姓氏] = "Davolio";显示姓氏为 Davolio 的雇员对应的“姓氏”与“名字”字段中的值。
SELECT [产品ID], [产品名称] FROM [产品] WHERE[类别ID] = Forms![新产品]![类别ID];对于“产品”表中“类别ID”值与打开着的“新产品”窗体中指定的“类别ID”值匹配的记录,显示“产品”表“产品ID”与“产品名称”字段的值。
SELECTAvg([成交价])AS [平均成交价] FROM [成交订单明细] WHERE[成交价] > 1000;在“平均成交价”字段中显示“成交价”字段值大于 1,000 的订单的平均成交价。
SELECT [类别ID],Count([产品ID])AS [产品ID 数量]
FROM [产品] GROUP BY [类别ID] HAVINGCount([产品ID]) > 10;
在“产品ID 数量”的字段中,显示产品数量超过 10 的类别的产品总数。

上页:Access 2003完整教程:向已有的超链接地址中输入超链接 下页:Access 2003完整教程:导出数据或数据库对象

Access 2003完整教程:查询和筛选中所用表达式的示例

Access 2003完整教程:导出数据或数据库对象Access 2003完整教程:表达式的示例
Access 2003完整教程:在字段中查找或替换值Access 2003完整教程:Access 2003 入门
Access 2003完整教程:导入或链接数据和对象Access 2003完整教程:Access 规格
Access 2003完整教程:使用键盘管理关系Access 2003完整教程:在 Access 中使用辅助功能
Access 2003完整教程:修改筛选 (MDB)Access 2003完整教程:字段、控件和对象的命名指南
Access 2003完整教程:在“数据表”视图中使用快捷键导航Access 2003完整教程:在“窗体”视图中使用快捷键导航
Access 2003完整教程:保护 Access 数据库中的 Visual Basic for Applications 代码 (MDB)Access 2003完整教程:使用用户级安全机制帮助保护 Access 数据库及其对象 (MDB)
Access 2003完整教程:发布网页Access 2003完整教程:更新指向图片或对象的链接
Access 2003完整教程:删除数据访问页顶部的占位符文字Access 2003完整教程:恢复初始的工具栏、按钮和命令设置
Access 2003完整教程:运行宏Access 2003完整教程:保护 Microsoft Access 项目 (ADP)
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号