LookupRecord 数据块

适用于:Access 2013、Office 2013

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

注意

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

Setting

SetField 操作具有以下参数。

参数

必需

说明

位置

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

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

Where Condition

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

别名

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

备注

如果 InWhere 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