Funkcja DLookup

W bazach danych programu Access dla komputerów stacjonarnych możesz używać funkcji DLookup do pobierania wartości konkretnego pola z określonego zestawu rekordów (domeny). Z funkcji DLookup można korzystać w module języka Visual Basic for Applications (VBA), w makrach, w wyrażeniach zapytania oraz w kontrolkach obliczeniowych używanych w formularzach i raportach.

Uwaga : Ten artykuł nie dotyczy aplikacji sieci Web programu Access.

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 warunki wskazane w argumencie kryteria spełnia więcej niż jedno pole, funkcja DLookup zwróci pierwsze wystąpienie. Należy podawać takie kryteria, aby funkcja DLookup mogła zawsze zwrócić tylko jedną, unikatową wartość pola. Jeśli chcesz mieć pewność, że funkcja DLookup będzie zwracać unikatową wartość, warto użyć jako kryterium wartości klucza podstawowego — na przykład wartości [EmployeeID] w poniższym przykładzie:

Dim varX As Variant
varX = 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 wprowadzone w rekordach w domenie nie są uwzględniane w działaniu tej funkcji. Jeśli chcesz, aby funkcja DLookup działała w oparciu o zmienione wartości, musisz najpierw zapisać zmiany. Aby to zrobić, kliknij pozycję Zapisz rekord w obszarze Rekordy na karcie Dane, przenieś fokus na inny rekord lub użyj 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ć dodatkowe informacje na temat pracy w języku VBA, wybierz pozycję Dokumentacja dewelopera z listy rozwijanej obok przycisku Wyszukaj i wprowadź odpowiednie terminy w polu wyszukiwania.

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 Variant
varX = 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 przy każdym wywołaniu funkcji DLookup program Access uzyska bieżącą wartość z kontrolki.

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

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

Dim intSearch As Integer
Dim varX As Variant
intSearch = 1
varX = DLookup("[CompanyName]", "Shippers", _
"[ShipperID] = " & intSearch)
Rozwijaj swoje umiejętności
Poznaj szkolenia
Uzyskuj nowe funkcje w pierwszej kolejności
Dołącz do niejawnych testerów pakietu Office

Czy te informacje były pomocne?

Dziękujemy za opinię!

Dziękujemy za opinię! Wygląda na to, że połączenie Cię z jednym z naszych agentów pomocy technicznej pakietu Office może być pomocne.

×