This documentation is archived and is not being maintained.

LookupRecord Data Block

A LookupRecord data block performs a set of actions on a specific record.

Note Note

The LookupRecord data block is available only in Data Macros.

The SetField action has the following arguments.






A string that identifies the record to operate on. The In argument can contain the name of the table, a select query, or a SQL statement.

The specified record cannot include data stored in a linked table or ODBC data source.

Where Condition


A string expression used to restrict the range of data on which the LookupRecord data block is performed. For example, criteria is often equivalent to the WHERE clause in an SQL expression, without the word WHERE. If criteria is omitted, the LookupRecord data block operates on the entire domain specified by the In argument. Any field that is included in criteria must also be a field in In.



A string that provides an alternative name for the record specified by the In argument. Often used to shorten the table name for subsequent references to prevent possible ambiguous references. If Alias is not specified, the table or query name will be used as the alias.

If the criteria specified by the In and Where Condition arguments specifies more than one record, then the LookupRecord data block will only operate on the first record.

If no record satisfies Where Condition or if In contains no records, then LookupRecord creates a blank record in which all of the fields contain a Null value.

The following example shows how to use the SetReturnVar action to return a value from a named data macro. A ReturnVar named CurrentServiceRequest is returned to the macro or Visual Basic for Applications (VBA) subroutine that called the named data macro.

Sample code provided by: Access 2010 Programmers Reference book cover The Microsoft Access 2010 Programmer’s Reference | About the Contributors

    Macro Name tblServiceRequests.dmGetCurrentServiceRequest

    prmAssignedTo =[ID]

    Control Name txtCurrentSR
    Property Value
    Value =[ReturnVars]![CurrentServiceRequest]

The following example shows how to use the RaiseError action to cancel the Before Change data macro event. When the AssignedTo field is updated, a LookupRecord data block is used to determine whether the assigned technician is currently assigned to an open service request. If this is true, then the Before Change event is cancelled and the record is not updated.

/* Get the name of the technician  */
Look Up A Record In tblTechnicians
    Where Condition =[tblTechnicians].[ID]=[tblServiceRequests].[AssignedTo]
    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
            Error Number 1234
            Error Description ="Cannot assign a request to the specified technician: " & [TechName]

End If

Wrox Press is driven by the Programmer to Programmer philosophy. Wrox books are written by programmers for programmers, and the Wrox brand means authoritative solutions to real-world programming problems.