LookupRecord 数据块

适用于:Access 2013、Office 2013

LookupRecord 数据块可对特定记录执行一组操作。

注意

LookupRecord 数据块仅适用于数据宏。

Setting

SetField 操作具有以下参数。

参数

必需

说明

位置

是

一个用于标识要对其执行操作的记录的字符串。 In 参数可以包含表的名称、select 查询或 SQL 语句。

注意:指定的记录不能包括链接表或 ODBC 数据源中存储的数据。

Where Condition

否

一个字符串表达式,用于限制对其执行 LookupRecord 数据块的数据的范围。 例如,条件通常等效于 SQL 表达式中的 WHERE 子句,而不使用 WHERE 一词。 如果省略条件, LookupRecord 数据块将针对 In 参数指定的整个域进行操作。 条件中包括的所有字段还必须是 In 中的字段。

别名

否

为 In 参数指定的记录提供备用名称的字符串。 通常用于缩短后续引用的表名称,以防止可能出现的不明引用。 如果不指定 Alias,则会将表或查询名称用作别名。

备注

如果 In 和 Where Condition 参数指定的条件返回多个记录, LookupRecord 数据块将仅对第一条记录运行。 如果没有记录与指定条件匹配,Access 将跳过 LookupRecord 块中包含的操作集,就像它是计算为 false 的 If 宏块表达式一样。

示例

以下示例演示如何使用 SetReturnVar 操作从命名数据宏返回值。 名为 CurrentServiceRequest 的 ReturnVar 将返回到宏或Visual Basic for Applications (调用命名数据宏的 VBA) 子例程。

示例代码提供方:Microsoft Access 2010 程序员参考。

    RunDataMacro
        Macro Name tblServiceRequests.dmGetCurrentServiceRequest
    
    Parameters
        prmAssignedTo =[ID]
    
    SetProperty
        Control Name txtCurrentSR
        Property Value
        Value =[ReturnVars]![CurrentServiceRequest]

以下示例演示如何使用 RaiseError 操作取消“更改前”数据宏事件。 当“AssignedTo”字段更新时,使用 LookupRecord 数据块来确定分配的技术人员当前是否分配到打开的服务请求。 如果发生这种情况,则取消“更改前”事件,并且不会更新记录。

    /* Get the name of the technician  */
    Look Up A Record In tblTechnicians
        Where Condition =[tblTechnicians].[ID]=[tblServiceRequests].[AssignedTo]
    SetLocalVar
        Name TechName
        Expression [tblTechnicians].[FirstName] & " " & [tblTechnicians].[LastName]
    /* End LookUpRecord  */
    
    If Updated("AssignedTo") Then
        Look Up A Record In tblServiceRequests
            Where Condition SR.[AssignedTo]=tblServiceRequests[AssignedTo] And 
                SR.[ID]<>tblServiceRequests.[ID] And IsNull(SR.[ActualCompletionDate])
            Alias SR
            RaiseError
                Error Number 1234
                Error Description ="Cannot assign a request to the specified technician: " & [TechName]
    
    End If