Блок данных 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