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