V Access desktopových databázích můžete pomocí funkce DLookup získat hodnotu určitého pole ze zadané sady záznamů ( Doména ). Funkci DLookup použijte v modulu jazyka Visual Basic for Applications (VBA), Makro, výraz dotazu nebo Vypočítaný ovládací prvek 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 jít buď o Řetězcový výraz, který určuje pole v tabulce nebo dotazu, nebo výraz, jehož prostřednictvím je proveden výpočet s daty daného pole. Argument výraz může obsahovat název pole tabulky, ovládacího prvku ve formuláři, konstanty nebo funkce. Pokud argument výraz obsahuje funkci, může jít o předdefinovanou funkci nebo funkci definovanou uživatelem, ale nikoli o jinou doménovou agregační funkci nebo agregační funkci 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éria |
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 argumentu kritéria neodpovídá žádný záznam nebo pokud argument doména neobsahuje žádné záznamy, vrátí funkce DLookup hodnotu Null.
Pokud argumentu kritéria odpovídá více polí, funkce DLookup vrátí první výskyt. Je třeba zadat kritéria, která zajistí, že funkce DLookup vrátí jedinečnou hodnotu pole. Chcete-li zajistit, aby funkce DLookup vrátila jedinečnou hodnotu, použijte jako kritérium hodnotu Primární klíč, jako je [EmployeeID] v následujícím příkladu:
Dim varX As Variant
varX = DLookup("[LastName]", "Employees", _ "[EmployeeID] = 1")
Bez ohledu na to, jestli funkci DLookup použijete v makru, modulu, výrazu dotazu nebo počítaném ovládacím prvku, je nutné vytvořit argument kritéria pečlivě, aby bylo zajištěno správné vyhodnocení funkce.
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í dotaz.
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ž je možné hodnotu z pole v zobrazit pomocí funkce DLookupCizí tabulka, pravděpodobně bude efektivnější vytvořit dotaz, který obsahuje potřebná pole z obou tabulek, a potom vytvořit formulář nebo sestavu založené na tomto 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 argumentu doména nebudou při použití této funkce zahrnuty. 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.
V následujícím příkladu jsou vráceny informace o názvu z pole NázevFirmy v záznamu odpovídajícím argumentu kritéria. Doménou je tabulka Dopravci. Argument kritéria omezuje výsledky na záznamy, u kterých je v poli IDdodavatele hodnota 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 se zajistí, ž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 je k získání hodnoty použita proměnná intSearch.
Dim intSearch As Integer
Dim varX As Variant intSearch = 1 varX = DLookup("[CompanyName]", "Shippers", _ "[ShipperID] = " & intSearch)