Applies ToAccess dla Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

W Access bazach danych dla komputerów stacjonarnych można użyć funkcji DLookup w celu uzyskania wartości określonego pola z określonego zestawu rekordów ( domena ). Funkcji DLookup można używać w module języka Visual Basic for Applications (VBA), makro, wyrażeniu zapytania lub kontrolka obliczeniowa w formularzu lub raporcie.

Funkcji DLookup można użyć, aby wyświetlić wartość pola, które nie znajduje się w źródle rekordów danego formularza lub raportu. Załóżmy na przykład, że mamy formularz oparty na tabeli Szczegóły zamówienia. Formularz wyświetla pola ID_zamówienia, ID_produktu, Cena_jednostkowa, Ilość oraz Rabat. Jednak pole Nazwa_produktu znajduje się w innej tabeli — w tabeli Produkty. W takiej sytuacji można użyć funkcji DLookup w kontrolce obliczeniowej, aby wyświetlić wartość pola Nazwa_produktu w tym samym formularzu.

Składnia

DLookup( wyrażenie, domena [, kryteria] )

Składnia funkcji DLookup zawiera następujące argumenty:

Argument

Opis

wyrażenie

Argument wymagany. Wyrażenie identyfikujące to pole, którego wartość ma być zwrócona. Może to być wyrażenie tekstowe identyfikujące konkretne pole w tabeli lub zapytaniu albo wyrażenie wykonujące obliczenia na danych w tym polu. Wyrażenie może zawierać nazwę pola w tabeli, kontrolkę formularza, stałą lub funkcję. Jeśli wyrażenie zawiera funkcję, może to być funkcja wbudowana lub zdefiniowana przez użytkownika, ale z wyłączeniem funkcji agregującej domeny i funkcji agregującej języka SQL.

domena

Argument wymagany. Wyrażenie tekstowe identyfikujące zestaw rekordów stanowiący domenę. Może to być nazwa tabeli lub nazwa zapytania, o ile to zapytanie nie wymaga parametru.

kryteria

Argument opcjonalny. Wyrażenie tekstowe używane w celu ograniczenia zakresu danych, dla którego wykonywana jest funkcja DLookup. Kryteria są często takie same, jak klauzula WHERE w wyrażeniu SQL, z pominięciem wyrazu WHERE. Jeśli argument kryteria zostanie pominięty, funkcja DLookup oceni wyrażenie względem danych w całej domenie. Każde pole będące częścią argumentu kryteria musi być także częścią domeny — w przeciwnym razie funkcja DLookup zwróci wynik Null.

Spostrzeżenia

Funkcja DLookup zwraca wartość pojedynczego pola na podstawie informacji zawartych w argumencie kryteria. Chociaż argument kryteria jest argumentem opcjonalnym, jeśli nie zostanie podana żadna wartość argumentu kryteria, funkcja DLookup zwróci losową wartość z domeny.

Jeśli żaden rekord nie spełnia warunków wskazanych w argumencie kryteria lub domena nie zawiera żadnych rekordów, funkcja DLookup zwróci wartość Null.

Jeśli więcej niż jedno pole spełnia kryteria, funkcja DLookup zwraca pierwsze wystąpienie. Należy określić kryteria, które zapewnią unikatowość wartości pola zwracanej przez funkcję DLookup . Aby upewnić się, że funkcja DLookup zwraca unikatową wartość, warto użyć wartości klucz podstawowy kryteriów, takiej jak [EmployeeID] w poniższym przykładzie:

Dim varX As VariantvarX = DLookup("[LastName]", "Employees", _    "[EmployeeID] = 1")

Niezależnie od tego, czy funkcja DLookup jest używana w makrze, module, wyrażeniu zapytania czy kontrolce obliczeniowej, należy bardzo starannie formułować argument kryteria, aby mieć pewność, że spowoduje on podanie właściwego wyniku.

Funkcji DLookup można używać do określania kryteriów w następujących miejscach: zapytanie — wiersz Kryteria oraz wyrażenie pola obliczeniowego, zapytanie aktualizujące — wiersz Aktualizacja do.

Funkcji DLookup możesz również użyć w wyrażeniu w kontrolce obliczeniowej w formularzu lub raporcie, jeśli pole, które chcesz wyświetlić, nie znajduje się w źródle rekordów, na którym oparty jest dany formularz lub raport. Załóżmy na przykład, że mamy formularz Szczegóły zamówienia oparty na tabeli Szczegóły zamówienia, który zawiera pole tekstowe ID_produktu wyświetlające pole ID_produktu. Aby w innym polu tekstowym była na tej podstawie wyświetlana wartość Nazwa_produktu, znajdująca się w tabeli Produkty, można utworzyć drugie pole tekstowe i ustawić następujące wyrażenie jako wartość właściwości Źródło kontrolki:

=DLookup("[ProductName]", "Products", "[ProductID] =" & Forms![Order Details]!ProductID)

Porady

  • Chociaż funkcji DLookup można używać do wyświetlania wartości, których źródłem jest tabela obca, a konkretnie pole w takiej tabeli, bardziej efektywnym rozwiązaniem może być utworzenie zapytania zawierającego potrzebne pola z obu tabel i oparcie formularza lub raportu na tym zapytaniu.

  • Do wyszukiwania wartości w tabeli obcej można także użyć Kreatora odnośników.

Uwaga: Niezapisane zmiany rekordów w domenie nie są uwzględniane podczas korzystania z tej funkcji. Aby funkcja DLookup była oparta na zmienionych wartościach, należy najpierw zapisać zmiany, klikając pozycję Zapisz rekord w obszarze Rekordy na karcie Dane , przenosząc fokus do innego rekordu lub używając metody aktualizacji .

Przykład

Uwaga: Poniższe przykłady przedstawiają sposób użycia tej funkcji w module języka Visual Basic for Applications (VBA). Aby uzyskać więcej informacji na temat pracy z językiem VBA, zobacz Dokumentacja języka VBA w programie Access.

W poniższym przykładzie funkcja zwraca informacje o nazwie firmy z pola CompanyName (Nazwa_firmy) rekordu, który spełnia wskazane kryteria. Domeną jest tabela Shippers (Spedytorzy). Argument kryteria ogranicza zestaw rekordów, do których stosowana jest funkcja, tylko do tych, dla których wartość ShipperID (ID_spedytora) wynosi 1.

Dim varX As VariantvarX = DLookup("[CompanyName]", _    "Shippers", "[ShipperID] = 1")

W następnym przykładzie, który jest również oparty na tabeli Shippers (Spedytorzy), do określenia kryteriów dla funkcji DLookup jest używana kontrolka formularza ShipperID (ID_spedytora). Zwróć uwagę, że odwołanie do kontrolki nie jest ujęte w cudzysłów, który wyznacza ciągi. Dzięki temu za każdym razem, gdy funkcja DLookup jest wywoływana, Access uzyska bieżącą wartość z kontrolki.

Dim varX As VariantvarX = DLookup("[CompanyName]", "Shippers", _    "[ShipperID] = " & Forms!Shippers!ShipperID)

W następnym przykładzie do pobrania wartości użyto zmiennej intSearch.

Dim intSearch As IntegerDim varX As VariantintSearch = 1varX = DLookup("[CompanyName]", "Shippers", _    "[ShipperID] = " & intSearch)

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.