V desktopových databázích Accessu můžete pomocí funkce DLookup získat hodnotu konkrétního pole ze zadané sady záznamů (domény). Funkci DLookup můžete použít v modulu jazyka jazyk Visual Basic for Application (VBA), v makrech, výrazu dotazu nebo počítaném ovládacím prvku ve formuláři nebo sestavě.
Funkci DLookup je možné použít k zobrazení hodnoty pole, které není ve zdroji záznamů pro formulář nebo sestavu. Předpokládejme například, že máte formulář založený na tabulce Rozpis objednávek. V tomto formuláři jsou zobrazena pole KódObjednávky, KódVýrobku, CenaZaKus, Množství a Sleva. Pole NázevVýrobku se však nachází v jiné tabulce. Použitím funkce DLookup v počítaném ovládacím prvku zobrazíte pole NázevVýrobku ve stejném formuláři.
Syntaxe
DLookup(výraz, doména [, kritéria] )
Syntaxe funkce DLookup má tyto argumenty:
| Argument | Popis |
|---|---|
| výraz | Povinný argument. Výraz určující pole, jehož hodnotu chcete vrátit. Může to být řetězcový výraz identifikující pole v tabulce nebo dotazu nebo výraz, který provádí výpočet dat v daném poli. V výrazu můžete zahrnout název pole v tabulce, ovládací prvek ve formuláři, konstantu nebo funkci. Pokud výraz obsahuje funkci, může být buď integrovaná, nebo uživatelem definovaná, ale ne jiná doménová agregace nebo agregační funkce SQL. |
| doména | Povinný argument. Řetězcový výraz identifikuje sadu záznamů tvořících doménu. Může jít o název tabulky nebo název dotazu, který nevyžaduje parametr. |
| Kritérium: | Nepovinný argument. Řetězcový výraz používaný k omezení rozsahu dat, na kterém se provádí funkce DLookup . Například kritéria jsou často ekvivalentní klauzuli WHERE ve výrazu SQL bez slova WHERE. Pokud jsou kritéria vynechána, funkce DLookup vyhodnotí výraz vůči celé doméně. Každé pole, které je součástí kritérií , musí být také polem v doméně; V opačném případě funkce DLookup vrátí hodnotu Null. |
Poznámky
Funkce DLookup vrátí jednu hodnotu pole na základě informací zadaných v kritériích. Kritéria jsou sice volitelný argument, ale pokud nezadáte hodnotu kritérií, funkce DLookup vrátí náhodnou hodnotu v doméně.
Pokud žádný záznam nesplňuje kritéria nebo pokud doména neobsahuje žádné záznamy, vrátí funkce DLookuphodnotu Null.
Pokud kritéria splňuje více než jedno pole, vrátí funkce DLookup první výskyt. Je třeba zadat kritéria, která zajistí, že funkce DLookup vrátí jedinečnou hodnotu pole. Pro kritéria můžete použít hodnotu primárního klíče, například [EmployeeID] v následujícím příkladu, abyste zajistili, že funkce DLookup vrátí jedinečnou hodnotu:
Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _
"[EmployeeID] = 1")
Ať už používáte funkci DLookup v makrech nebo modulu, výraz dotazu nebo počítaný ovládací prvek, musíte argument kritéria sestavit pečlivě, abyste zajistili, že bude vyhodnocen správně.
Pomocí funkce DLookup můžete zadat kritéria v řádku Kritéria dotazu, v rámci výrazu počítaného pole v dotazu nebo v řádku Aktualizovat do v aktualizačním dotazu.
Funkci DLookup je možné použít také ve výrazu v počítaném ovládacím prvku ve formuláři nebo sestavě, pokud se pole, které chcete zobrazit, nenachází ve zdroji záznamů, na kterém jsou daný formulář nebo sestava založeny. Předpokládejme například, že máte formulář Rozpis objednávek založený na tabulce Rozpis objednávek, a tento formulář obsahuje textové pole KódVýrobku, které zobrazí pole KódVýrobku. Pokud chcete vyhledat NázevVýrobku v tabulce Výrobky založené na hodnotě v textovém poli, můžete vytvořit jiné textové pole a nastavit pro vlastnost ZdrojOvládacíhoPrvku tohoto pole následující výraz:
=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID)
Tipy
- I když můžete použít funkci DLookup k zobrazení hodnoty z pole v cizí tabulce, může být efektivnější vytvořit dotaz obsahující pole, která potřebujete z obou tabulek, a pak založit formulář nebo sestavu na daném dotazu.
- K vyhledání hodnot v cizí tabulce je možné použít také Průvodce vyhledáváním.
Poznámka
Neuložené změny záznamů v doméně se při použití této funkce nezahrnou. Pokud chcete, aby byla funkce DLookup založena na změněných hodnotách, je nutné nejdříve změny uložit kliknutím na Uložit záznam ve skupinovém rámečku Záznamy na kartě Data, přesunutím fokusu na jiný záznam nebo pomocí metody Update.
Příklad
Poznámka
Následující příklady ukazují použití této funkce v modulu VBA (Visual Basic pro Applications). Další informace o práci s jazykem VBA najdete v tématu Referenční informace k jazyku VBA.
Následující příklad vrátí informace o názvu z pole Název_společnosti záznamu splňujícího kritéria. Doménou je tabulka Dopravci. Argument kritéria omezuje výslednou sadu záznamů na ty, pro které se ID odesílatele rovná 1.
Dim varX As Variant
varX = DLookup("[CompanyName]", _
"Shippers", "[ShipperID] = 1")
V dalším příkladu jsou v tabulce Dopravci zadána kritéria pro funkci DLookup pomocí ovládacího prvku formuláře IDdodavatele. Všimněte si, že odkaz na ovládací prvek není uveden v uvozovkách, které označují řetězce. Tím je zajištěno, že při každém volání funkce DLookup získá Access aktuální hodnotu z ovládacího prvku.
Dim varX As Variant
varX = DLookup("[CompanyName]", "Shippers", _
"[ShipperID] = " & Forms!Shippers!ShipperID)
V dalším příkladu se k získání hodnoty používá proměnná intSearch, .
Dim intSearch As Integer
Dim varX As Variant
intSearch = 1
varX = DLookup("[CompanyName]", "Shippers", _
"[ShipperID] = " & intSearch)