access表达式的用法

    技术2022-05-11  13

    Access表达式  窗体、报表和数据访问页中使用的表达式示例

    处理和计算日期的示例

    下表列出了可在窗体、报表和数据访问页上的计算控件中使用的表达式示例。

    表达式 说明 =Date() 使用 Date 函数显示当前日期,显示时用 mm-dd-yyyy 形式,其中 mm 是月份(1 到 12),dd 是日期(1 到 31),yyyy 则是年份(1980 到 2099)。 =Format(Now(), "ww") 使用 Format 函数显示当前日期在该年中所处的星期号,其中 ww 为 1 到 53。 =DatePart("yyyy", [订购日期]) 使用 DatePart 函数显示“订购日期”字段值的四位年份值。 =DateAdd("y", -10, [应付日期]) 使用 DateAdd 函数显示“应付日期”字段值前 10 天的日期值。 =DateDiff("d", [订购日期], [发货日期]) 使用 DateDiff 函数显示“订购日期”和“发货日期”字段值之间相差的天数。

    注意   在计算控件的“控件来源”属性中,以 = 运算符开头。在数据访问页上,可以省略 = 运算符,而键入一个别名;例如,键入 WeekNumber: Format(Now(), "ww")。在窗体或报表中设置计算控件的“名称”属性或在数据访问页中设置计算控件的 ID 属性时,应确保使用唯一的名称。不要使用表达式中使用的控件的名称或 ID。 在窗体或报表上的表达式中,可使用控件的名称或基础记录源中的字段名。在数据访问页上的表达式中,只能使用页的数据定义中的字段的名称。 下表列出了可以在窗体、报表和数据访问页上的计算控件中使用的表达式示例。

    表达式 说明 ="无" 显示“无”。 =[名字]&" "&[姓氏] 显示“姓氏”字段和“名字”字段的值,两者之间以空格隔开。 =Left([产品名称], 1) 使用 Left 函数显示“产品名称”字段值的第一个字符。 =Right([资产代码], 2) 使用 Right 函数显示“资产代码”字段值的最后两个字符。 =Trim([地址]) 使用 Trim 函数显示“地址”字段的值,并且删除首尾的空格。 =IIf(IsNull([地区]),[城市]&" "& [邮政编码],[城市]&" "&[地区]&" "& [邮政编码]) 如果“地区”值为 Null,则使用 IIf 函数显示“城市”和“邮政编码”字段的值,否则显示“城市”、“地区”和“邮政编码”字段的值,中间以空格分隔。 注意   在计算控件的“控件来源”属性中,以 = 运算符开头。在数据访问页上,可以省略 = 运算符,而键入一个别名;例如,键入“FullName: [名字]&" "& [姓氏]”。 在窗体或报表中设置计算控件的“名称”属性或在数据访问页中设置计算控件的 ID 属性时,应确保使用唯一的名称。不要使用表达式中使用的控件名称或 ID。 在窗体或报表的表达式中,可使用控件的名称或基记录源的字段名。在数据访问页的表达式中,只能使用在页的数据定义中的字段的名称。处理数学运算的示例

    下表列出了可在窗体、报表和数据访问页上的计算控件中使用的表达式示例。

    表达式 说明 = [小计] + [运费] “小计”和“运费”字段值的总和。 =[到货日期]-[发货日期] “到货日期”和“发货日期”字段值的差。 =[价格] * 1.06 “价格”字段值的 1.06 倍(“价格”值增加 6%)。 =[数量] * [价格] “数量”和“价格”字段值的乘积。 =[雇员总计]/[国家总计] “雇员总计”和“国家总计”字段值的比值。 注意   在计算控件的“控件来源”属性中,表达式前面要加 = 运算符。在数据访问页中,可省略 =,而键入别名。例如,键入“ExtendedPrice: [数量] * [价格]”。 在窗体或报表中设置计算控件的“名称”属性或在数据访问页中设置计算控件的 ID 属性时,应确保使用唯一的名称。不要使用表达式中使用的控件名称或 ID。 在窗体或报表的表达式中,可使用控件的名称或基记录源中的字段名。在数据访问页的表达式中,只能使用页的数据定义中的字段的名称。 如果在表达式中使用算术运算符(+、-、*、/),且表达式中某一控件的值为 Null,则整个表达式的结果将变成 Null。在窗体或报表上,如果表达式中某个控件的一些记录值可能为 Null,可使用 Nz 函数将 Null 值转化为 0,例如: =Msodsc.Nz([小计]) + Msodsc.Nz([运费])条件表达式示例

     下表列出了可在窗体、报表和数据访问页上的计算控件中使用的表达式示例。

    表达式 说明 =IIf([确认] = "是","订单已确认","订单没有确认") 如果“确认”字段的值为“是”则显示“订单已确认”消息,否则显示“订单没有确认”。 =IIf(IsNull([国家])," ",[国家]) 如果“国家”字段值为 Null 则显示空字符串,否则显示“国家”字段的值。 =IIf(IsNull([地区]),[城市]&" "& [邮政编码], [城市]&" "&[地区]&" " &[邮政编码]) 如果“地区”字段值为 Null,则显示“邮政编码”和“城市”字段的值,否则显示“城市”、“地区”和“邮政编码”字段的值。 =IIf(IsNull([到货日期] - [发货日期]),"检查相差日期",[到货日期] - [发货日期]) 如果“到货日期”减去“发货日期”的值为 Null,则显示“检查相差日期”消息,否则显示“到货日期”和“发货日期”字段值之差。

     注意  

    在计算控件的“控件来源”属性中,以 = 运算符开头。在数据访问页上,可以省略 = 运算符,而键入一个别名;例如,键入“DisplayCountry: IIf(IsNull([国家/地区])," ",[国家/地区])”。 在窗体或报表中设置计算控件的“名称”属性或在数据访问页中设置计算控件的 ID 属性时,应确保使用唯一的名称。不要使用表达式中使用的控件名称或 ID。 在窗体或报表的表达式中,可使用控件的名称或基记录源中的字段名。在数据访问页的表达式中,只能使用页的数据定义中的字段的名称。 聚合函数和域聚合函数的示

    注意   不能在数据访问页中使用聚合函数和域聚合函数。此外,也不能在 Microsoft Access 项目 (.adp) 中使用域聚合函数。

    使用聚合函数的表达式示例

    表达式 说明 =Avg([运费]) 使用 Avg 函数显示“运费”控件的平均值。 =Count([订单ID]) 使用 Count 函数显示“订单ID”控件中的记录条数。  =Sum([销售额]) 使用 Sum 函数显示“销售额”控件值的总和。 =Sum([数量] * [价格]) 使用 Sum 函数显示“数量”和“价格”控件值的乘积总和。  =[销售额] / Sum([销售额]) * 100 显示销售百分比,即“销售额”控件值与所有“销售额”控件值的总和的比值。 注意   如果控件的“格式”属性设为“百分比”,则不要包含 *100。 使用域聚合函数的表达式示例

    表达式 说明 =DLookup("[联系人姓名]", "[供应商]", "[供应商ID] = Forms![供应商ID]") 使用 DLookup 函数显示当“供应商”表的“供应商ID”字段值等于活动窗体上的“供应商ID”控件值时的“联系人姓名”字段值。 =DLookup("[联系人姓名]", "[供应商]", "[供应商ID] = Forms![新供应商]![供应商ID]") 使用 DLookup 函数显示当“供应商”表的“供应商ID”字段等于“新供应商”窗体中的“供应商ID”控件值时的“供应商ID”字段值。 =DSum("[订单金额]", "[订单]", "[客户ID] = 'RATTC'") 使用 DSum 函数显示“订单”表中“客户ID”字段值为 RATTC 时的“订单金额”字段值的总和。

    注意   在计算控件中,表达式前要加上 = 运算符。 在设置计算控件的“名称”属性时,应确保使用唯一的名称。不要使用表达式中使用的控件的名称。 在查询和筛选中使用表达式示例

    用于检索记录的条件示例

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

    表达式 结果 > 234 对于“数量字段”,大于 234 的数字 <1200.45 对于“单价”字段,小于 1200.45 的数字 >= "Callahan" 对于“姓氏”字段,从 Callahan 到字母表结尾的所有姓氏 Between #2/2/93# And #12/1/93#  对于“订购日期”字段,从 1999 年 2 月 2 日到 1999 年 12 月 1 日的日期 (ANSI-89) Between #2/2/93# And #12/1/93#  对于“订购日期”字段,从 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)

    DatePart 函数”详细表述如下:

      

    DatePart 函数返回一个 Integer 值,其中包含给定 Date 值的指定组件。

    Public Overloads Function DatePart( _   ByVal Interval As DateInterval, _   ByVal DateValue As DateTime, _   Optional ByVal FirstDayOfWeekValue As FirstDayOfWeek = VbSunday, _   Optional ByVal FirstWeekOfYearValue As FirstWeekOfYear = VbFirstJan1 _) As Integer- 或 -

    Public Overloads Function DatePart( _    ByVal Interval As String, _   ByVal DateValue As Object, _   Optional ByVal DayOfWeek As FirstDayOfWeek = FirstDayOfWeek.Sunday, _   Optional ByVal WeekOfYear As FirstWeekOfYear = FirstWeekOfYear.Jan1 _) As Integer参数Interval 必选项。DateInterval 枚举值或 String 表达式,它表示所要返回的日期/时间值部分。 DateValue 必选项。所要计算的 Date 值。 FirstDayOfWeekValue 可选项。选自 FirstDayOfWeek 枚举的值,该枚举用于指定周的第一天。若未指定,则使用 FirstDayOfWeek.Sunday。 FirstWeekOfYearValue 可选项。选自 FirstWeekOfYear 枚举的值,该枚举用于指定年的第一周。若未指定,则使用 FirstWeekOfYear.Jan1。 设置Interval 参数可以有以下设置。

    枚举值 字符串 所要返回的日期/时间值部分 DateInterval.Day  d 月中的哪一天(从 1 到 31) DateInterval.DayOfYear  y 年中的哪一天(从 1 到 366) DateInterval.Hour  h 小时 DateInterval.Minute  n  分钟 DateInterval.Month  m 月 DateInterval.Quarter  q  季度 DateInterval.Second  s 秒钟 DateInterval.Weekday  w 星期几(从 1 到 7) DateInterval.WeekOfYear  ww  年中的哪一周(从 1 到 53) DateInterval.Year  yyyy 年

    FirstDayOfWeekValue 参数可以有以下设置。

    枚举值 值 说明 FirstDayOfWeek.System  0  系统设置中指定的周的第一天  FirstDayOfWeek.Sunday  1  星期日(默认) FirstDayOfWeek.Monday  2  星期一(依照 ISO 8601 标准第 3.17 节)  FirstDayOfWeek.Tuesday  3  星期二 FirstDayOfWeek.Wednesday  4  星期三 FirstDayOfWeek.Thursday  5  星期四 FirstDayOfWeek.Friday  6  星期五 FirstDayOfWeek.Saturday  7  星期六

    FirstWeekOfYearValue 参数可以有以下设置。

    枚举值 值 说明 FirstWeekOfYear.System  0  系统设置中指定的年的第一周 FirstWeekOfYear.Jan1  1  1 月 1 日所在的周(默认) FirstWeekOfYear.FirstFourDays  2  至少有四天属于新年的周(依照 ISO 8601 标准第 3.17 节) FirstWeekOfYear.FirstFullWeek  3  新年的第一个全周

    异常/错误异常类型 错误号 条件 ArgumentException 5 Interval 无效。  InvalidCastException 13 DateValue 不能被强制为 Date。

    备注可以使用 DatePart 函数来计算日期/时间值并返回一个特定组件。例如,可以使用 DatePart 计算某个日期是星期几或目前为几点钟。

    若为 Interval 参数选择 DateInterval.Weekday,返回的值与 FirstDayOfWeek 枚举的值一致。若选择 DateInterval.WeekOfYear,DatePart 使用 System.Globalization 命名空间的 Calendar 和 CultureInfo 类来确定当前设置。

    FirstDayOfWeekValue 参数会影响使用 DateInterval.Weekday 和 DateInterval.WeekOfYear Interval 设置所进行的计算。FirstWeekOfYearValue 参数影响为 Interval 指定 DateInterval.WeekOfYear 的计算。

    如果有任何参数的值无效,就会发生 ArgumentException 错误。若 DateValue 参数值无法被强制为有效的 Date 值,则会发生 InvalidCastException 错误。

    因为每个 Date 值都由 DateTime 结构支持,其方法在检索日期/时间部分中提供了额外的选项。例如,将时间值设置为午夜,可以获取 Date 变量的完整日期值,如下所示:

    Dim CurrDatTim As Date = Now   ' Current date and time.Dim LastMidnight As Date = CurrDatTim.Date   ' At midnight.示例本示例取得一个日期,并使用 DatePart 函数显示该日期所在的季度。

    Dim FirstDate, Msg As String   'Declare variables.Dim SecondDate As DateFirstDate = InputBox("Enter a date:")SecondDate = CDate(FirstDate)Msg = "Quarter: " & DatePart(DateInterval.Quarter, SecondDate)MsgBox (Msg)最后写为:select (cstr(datepart('yyyy',xx'-'+cstr(datepart('m',xx))) from yy

    DatePart 函数 语法说明

    [b][color=Blue][size=6]DatePart 函数[/size][/color][/b]适用于: Microsoft Office Access 2003 

    返回一个包含给定日期的指定部分的 Variant (Integer)。

    语法

    DatePart(interval, date[,firstdayofweek[, firstweekofyear]])

    DatePart 函数语法具有这些命名参数:

    [color=Blue][b][size=4]部分[/size][/b][/color]        [color=Blue][b][size=4]说明[/size][/b][/color] interval         必选。字符串表达式,是要返回的时间间隔。 date          必选。要计算的 Variant (Date) 值。 firstdayofweek        可选。常量,指定一周的第一天。如果未指定,则假设为星期日。 firstweekofyear       可选。常量,指定一年的第一周。如果未指定,那么第一周将假设为 1 月 1 日所在的周。

    设置

    interval 参数具有下列这些设置:

    [b][color=Blue][size=4]设置[/size][/color][/b]     [b][color=Blue][size=4]说明 [/size][/color][/b]yyyy        年 q           季 m          月 y        一年中的日期 d        日 w          工作日 ww       周 h        时 n        分 s        秒

    firstdayofweek 参数具有下列设置:

    [b][color=Blue][size=4]常量[/size][/color][/b]                   [b][color=Blue][size=4]值[/size][/color][/b]              [b][color=Blue][size=4]说明[/size][/color][/b] vbUseSystem        0          使用 NLS API 设置。 vbSunday             1           星期日(默认值) vbMonday            2           星期一 vbTuesday           3           星期二 vbWednesday      4           星期三 vbThursday          5           星期四 vbFriday               6           星期五 vbSaturday          7           星期六

    firstweekofyear 参数具有下列这些设置:

    [b][color=Blue][size=4]常量[/size][/color][/b]                      [b][color=Blue][size=4]值 [/size][/color][/b]               [b][color=Blue][size=4]说明[/size][/color][/b] vbUseSystem             0           使用 NLS API 设置。 vbFirstJan1                1           由 1 月 1 日所在的周开始(默认值)。 vbFirstFourDays          2           由在新的一年中至少有四天的第一周开始。 vbFirstFullWeek          3           由一年中的第一个完整周开始。

    说明

    可以使用 DatePart 函数计算日期并返回特定的时间间隔。例如,可以使用 DatePart 计算一周中的星期几或当前小时。

    firstdayofweek 参数会影响使用“w”和“ww”时间间隔符号的计算。

    如果 date 是日期文字,那么指定的年将成为该日期的固定部分。然而,如果 date 由双引号 (" ") 引起来,并且省略了年,那么在每次计算 date 表达式时,会将当前年插入到代码中。这样,就能编写在其他年份可以使用的代码。

    [b]注释[/b]  对于 date,如果 Calendar 属性设置为公历,那么,所提供的日期必须是公历。如果 Calendar 是回历,那么所提供的日期必须是回历。

    返回的日期部分位于当前阿拉伯日历的时间间隔单位中。例如,如果当前日历是回历,并且要返回的日期部分是年,那么年的值将为回历年。


    最新回复(0)