В настолни бази данни на Access можете да използвате DLookup функцията, за да получите стойността на определено поле от определен набор от записи (домейн). Можете да използвате DLookup в модул на Visual Basic for Applications (VBA), макрос, израз на заявка или изчисляема контрола във формуляр или отчет.
Можете да използвате функцията DLookup , за да покажете стойността на поле, което не е в източника на записи за вашия формуляр или отчет. Да предположим например, че имате формуляр, базиран на таблица с подробни данни за поръчки. Формулярът OrderIDпоказва , ProductID, UnitPrice, Quantityи Discount полета. Обаче полето ProductName е в друга таблица – таблицата Products . Можете да използвате DLookup функцията в изчисляема контрола за показване ProductName в същия формуляр.
Синтаксис
DLookup(expr, domain [, criteria])
Функцията DLookup има следните аргументи:
| Аргумент | Описание |
|---|---|
expr |
Задължителен. Израз, който идентифицира полето, чиято стойност искате да върнете. Това може да бъде низов израз, който идентифицира поле в таблица или заявка, или израз, който извършва изчисление върху данните в това поле. В expr, можете да включите името на поле в таблица, контрола на формуляр, константа или функция. Ако expr съдържа функция, тя може да бъде вградена или дефинирана от потребителя, но не и друга агрегатна или агрегатна функция на домейн SQL . |
domain |
Задължително. Низов израз, който идентифицира набора от записи, който съставлява домейна. Това може да бъде името на таблица или името на заявка за заявка, която не изисква параметър. |
criteria |
Незадължително. Низов израз, използван за ограничаване на диапазона от данни, върху които DLookup се изпълнява функцията. Например criteria често е еквивалентно WHERE на изречението в SQL израза, без думата WHERE. Ако изпуснете criteria, DLookup функцията се изчислява expr спрямо целия домейн. Всяко поле, включено в criteria трябва да бъде също и поле в domain. В противен случай DLookup функцията връща Null. |
Забележки
Функцията DLookup връща стойност на единично поле въз основа на информацията, указана в criteria. Въпреки че criteria е незадължително, ако не предоставите стойност за него, DLookup функцията връща случайна стойност в домейна.
Ако нито един запис не отговаря criteriaна изискванията или ако domain не съдържа никакви записи, DLookup функцията връща Null.
Ако се срещнат criteriaповече от едно поле , DLookup функцията връща първата поява. Трябва да зададете критерии, които гарантират, че стойността на полето, върната от, DLookup е уникална. Можете да използвате стойност на първичен ключ за вашите критерии, както [EmployeeID] в следния пример, за да се гарантира, че се DLookup връща уникална стойност:
Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _
"[EmployeeID] = 1")
Независимо дали използвате DLookup функцията в макрос или модул, израз на заявка, или изчисляема контрола, съставете внимателно аргумента criteria , така че Access да го изчисли правилно.
Можете да използвате функцията DLookup , за да зададете критерии в реда за критерии на заявка, в израз за изчисляемо поле на заявка или в реда Update To на заявка за актуализиране.
Можете също да използвате DLookup функцията в израз в изчисляема контрола във формуляр или отчет, ако полето, което трябва да покажете, не е в източника на записи, на който се основава вашият формуляр или отчет. Да предположим например, че имате формуляр за подробни данни за поръчки, базиран на таблица с подробни данни за поръчки с текстово поле, наречено ProductID за показване на полето ProductID . За да търсите ProductName от Products таблица въз основа на стойността в текстовото поле, създайте друго текстово поле и задайте свойството му ControlSource на следния израз:
=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID)
Съвети
- Въпреки че можете да използвате функцията DLookup , за да покажете стойност от поле във външна таблица, може да се окаже по-ефективно да създадете заявка, съдържаща полетата от двете таблици, от които имате нужда, а след това да базирате формуляра или отчета на тази заявка.
- Можете да използвате съветника за търсене, за да намерите данни във външна таблица.
Забележка
Незаписаните промени в записите domain не се включват, когато използвате тази функция. Ако искате DLookup да използвате променените стойности, първо запишете промените, като щракнете върху "Съхрани записа " под "Записи " в раздела " Данни ", преместите фокуса към друг запис или използвате метода Update .
Пример
Забележка
Примерите по-долу илюстрират използването на тази функция във Visual Basic for Applications (VBA). За повече информация за работата с VBA вж. справката за Access VBA.
Следващият пример връща информация за имена от полето CompanyName на записа, който отговаря на criteria. Домейнът е таблица Shippers . Аргументът criteria ограничава получения набор от записи до тези, за които ShipperID е равно 1на .
Dim varX As Variant
varX = DLookup("[CompanyName]", _
"Shippers", "[ShipperID] = 1")
В следващия пример от таблицата Shippers се използва контролата ShipperID на формуляр, за да предостави критерии за DLookup функцията. Препратката към контролата не е включена в кавички, които означават низове. Това гарантира, че при всяко DLookup изпълнение Access ще получи текущата стойност от контролата.
Dim varX As Variant
varX = DLookup("[CompanyName]", "Shippers", _
"[ShipperID] = " & Forms!Shippers!ShipperID)
В следващия пример се използва променлива, intSearch, за да се получи стойността.
Dim intSearch As Integer
Dim varX As Variant
intSearch = 1
varX = DLookup("[CompanyName]", "Shippers", _
"[ShipperID] = " & intSearch)