Поделиться через


Блок данных LookupRecord

Область применения: Access 2013, Office 2013

Блок данных LookupRecord выполняет набор действий с определенной записью.

Примечание.

Блок данных LookupRecord доступен только в макросах данных.

Setting

Аргументы действия SetField приведены ниже.

Аргумент

Обязательный

Описание

Куда включается

Да

Строка, идентифицирующая запись, с которой нужно работать. Аргумент In может содержать имя таблицы, запрос на выборку или инструкцию SQL.

ПРИМЕЧАНИЕ. Указанная запись не может содержать данные, хранящиеся в связанной таблице или источнике данных ODBC.

Условие where

Нет

Строковое выражение, используемое для ограничения диапазона данных, на котором выполняется блок данных LookupRecord . Например, критерии часто эквивалентны предложению WHERE в выражении SQL без слова WHERE. Если условия опущены, блок данных LookupRecord работает со всем доменом, указанным аргументом In . Любое поле, включенное в условия, также должно быть полем в in.

Alias

Нет

Строка, предоставляющая альтернативное имя записи, указанной аргументом In . Часто используется для сокращения имени таблицы для последующих ссылок, чтобы предотвратить возможные неоднозначные ссылки. Если псевдоним не указан, в качестве псевдонима будет использоваться имя таблицы или запроса.

Замечания

Если условия, заданные аргументами In и Where Condition , возвращают несколько записей, блок данных LookupRecord будет работать только с первой записью. В случае, если никакие записи не соответствуют указанным условиям, Access пропустит набор действий, содержащихся в блоке LookupRecord , как если бы это было выражение блока макросов If , которое было оценено как false.

Пример

В следующем примере показано, как использовать действие SetReturnVar для возврата значения из именованного макроса данных. Объект ReturnVar с именем CurrentServiceRequest возвращается в макрос или подпрограмму Visual Basic для приложений (VBA), которая вызвала именованный макрос данных.

Пример кода изсправочника программиста Microsoft Access 2010.

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

В следующем примере показано, как использовать действие RaiseError для отмены макроса данных перед изменением. При обновлении поля AssignedTo блок данных LookupRecord используется для определения того, назначен ли назначенный специалист для открытого запроса на обслуживание. Если это так, событие Before Change отменяется, а запись не обновляется.

    /* 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