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