Funkcja DLookup

Dotyczy
Access dla Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

W bazach danych programu Access dla komputerów stacjonarnych funkcja DLookup ta służy do pobierania wartości z określonego pola z określonego zestawu rekordów (domeny). Może być stosowany DLookup w module języka Visual Basic for Applications (VBA), makrze, wyrażeniu zapytania lub kontrolce obliczeniowej w formularzu bądź raporcie.

Tej DLookup funkcji można użyć do wyświetlenia wartości 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. W formularzu są wyświetlane pola OrderID, ProductID, UnitPrice, Quantityi Discount pola. Jednak pole ProductName znajduje się w innej tabeli — w tej Products tabeli. Funkcji w kontrolce obliczeniowej DLookup można użyć w celu wyświetlenia ProductName w tym samym formularzu.

Składnia

DLookup(expr, domain [, criteria])

Funkcja DLookup ma następujące argumenty:

Argument Opis
expr Argument wymagany. Wyrażenie identyfikujące to pole, którego wartość ma być zwrócona. Może to być wyrażenie tekstowe, które identyfikuje pole w tabeli lub zapytaniu, albo wykonywanie obliczeń na danych w tym polu. Można exprw niej zawrzeć nazwę pola tabeli, kontrolki w formularzu, stałej lub funkcji. Jeśli expr zawiera funkcję, może to być wbudowana lub zdefiniowana przez użytkownika, ale z wyłączeniem innej funkcji agregującej lub SQL agregującej domeny.
domain Argument wymagany. Wyrażenie tekstowe identyfikujące zestaw rekordów tworzących domenę. Może to być nazwa tabeli lub nazwa zapytania, o ile to zapytanie nie wymaga parametru.
criteria Argument opcjonalny. Wyrażenie tekstowe używane w celu ograniczenia zakresu danych, na których DLookup działa funkcja. Na przykład criteria jest często równoznaczne ze WHERE zdaniem w wyrażeniu SQL , bez tego wyrazu WHERE. Jeśli parametr zostanie criteriapominięty, funkcja będzie obliczana DLookupexpr względem całej domeny. Każde pole zawarte w criteria musi być również polem w domain. W przeciwnym razie DLookup funkcja zwraca Nullwartość .

Spostrzeżenia

Funkcja DLookup zwraca wartość pojedynczego pola na podstawie informacji zawartych w criteria. Chociaż criteria jest opcjonalna, jeśli nie podasz jej wartości, DLookup funkcja zwróci losową wartość z domeny.

Jeśli żaden rekord nie spełnia criteriakryteriów lub nie domain zawiera żadnych rekordów, DLookup funkcja zwraca wynik Null.

Jeśli zostanie spełnione criteriawięcej niż jedno pole, DLookup funkcja zwraca pierwsze wystąpienie. Należy określić kryteria, które zapewnią, że wartość pola zwracana przez DLookup jest unikatowa. Aby mieć pewność, że DLookup zostaną zwrócone wartości unikatowe, warto użyć dla kryteriów wartości klucza podstawowego, tak jak [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 kwerendy czy kontrolce obliczeniowej, należy starannie skonstruować argument, criteria aby program Access poprawnie go ocenił.

Tej DLookup funkcji można używać do określania kryteriów w wierszu Kryteria kwerendy, w wyrażeniu pola obliczeniowego w zapytaniu lub w wierszu Aktualizacja do w zapytaniu aktualizującym.

Tej DLookup funkcji możesz też użyć w wyrażeniu w kontrolce obliczeniowej formularza lub raportu, 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, z polem ProductID tekstowym, w którym jest wyświetlane to ProductID pole. Aby rozpocząć wyszukiwanie w Products tabeli ProductName na podstawie wartości w polu tekstowym, należy utworzyć drugie pole tekstowe i ustawić następujące wyrażenie jako właściwość ŹródłoKontrolki:

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

Porady

  • Chociaż funkcji DLookup można używać do wyświetlania wartości z pola tabeli obcej, bardziej efektywnym rozwiązaniem może być utworzenie zapytania zawierającego potrzebne pola z obu tabel, a następnie 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 nie domain są uwzględniane w przypadku użycia tej funkcji. Jeśli chcesz DLookup użyć zmienionych wartości, najpierw zapisz zmiany, klikając przycisk Zapisz rekord w obszarze Rekordy na karcie Dane , przenosząc fokus do innego rekordu lub stosując metodę Update .

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 Informacje o języku VBA w programie Access.

W poniższym przykładzie funkcja zwraca informacje o nazwie z CompanyName pola rekordu, które spełnia kryteria criteria. Domeną jest Shippers tabela. Argument criteria ogranicza wynikowy zestaw rekordów do tych, dla których ShipperID równa się 1.

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

W następnym przykładzie z Shippers tabeli użyto kontrolki ShipperID formularza w celu określenia kryteriów DLookup funkcji. Odwołanie do kontrolki nie jest ujęte w cudzysłów, który wyznacza ciągi. Dzięki temu przy każdym DLookup uruchomieniu program Access pobiera 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)