Przykłady wyrażeń

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

W tym artykule przedstawiono wiele przykładów wyrażeń w programie Access. Wyrażenie to kombinacja operatorów matematycznych i logicznych, stałych, funkcji, pól tabel, kontrolek i właściwości, której wynikiem jest pojedyncza wartość. Wyrażenia w programie Access mogą służyć do obliczania wartości, sprawdzania poprawności danych i ustawiania wartości domyślnej.

W tym artykule

Formularze i raporty

Wszystkie wyrażenia używane w formularzach i raportach

Operacje tekstowe
Wartości znajdujące się w innych kontrolkach
Operacje na datach
Nagłówki i stopki
Funkcje liczące, sumujące i uśredniające wartości
Warunki obejmujące tylko dwie wartości
Operacje arytmetyczne
Funkcje agregujące w języku SQL

Zapytania i filtry

Wszystkie wyrażenia używane w zapytaniach i filtrach

Operacje tekstowe
Funkcje agregujące w języku SQL
Dopasowywanie wartości tekstowych
Wzorce dopasowywania rekordów oparte na operatorze Like
Zapytania aktualizujące
Operacje arytmetyczne
Znajdowanie brakujących danych
Kryteria oparte na zgodności dat
Dopasowywanie wierszy za pomocą funkcji agregujących SQL
Instrukcje SQL
Operacje na datach
Pola obliczeniowe z podzapytaniami
Pola z brakującymi danymi
Dopasowywanie pól przy użyciu podzapytań

Tabele

Wszystkie wyrażenia używane w tabelach

Domyślne wartości pól Reguły poprawności pól

Makra

Wszystkie wyrażenia używane w makrach

Formularze i raporty

Tabele w tej sekcji zawierają przykłady wyrażeń służących do obliczania wartości w kontrolce umieszczonej w formularzu lub raporcie. Aby utworzyć kontrolkę obliczeniową, należy wprowadzić wyrażenie we właściwości kontrolki ŹródłoKontrolki zamiast w polu tabeli lub zapytaniu.

Uwaga Wyrażeń można także używać w formularzu lub raporcie, gdy są wyróżniane dane z formatowaniem warunkowym.

Operacje tekstowe

Wyrażenia w poniższej tabeli używają & operatorów (handlowe "i") i + (plus) do łączenia ciągów tekstowych, wbudowanych funkcji w celu manipulowania ciągami tekstowymi lub operowania na tekście w inny sposób w celu utworzenia kontrolki obliczeniowej.

Wyrażenie Wynik
="N/A" Wyświetla wyrazy „nie dotyczy”.
=[FirstName] & " " & [LastName] Wyświetla wartości znajdujące się w polach tabeli o nazwach Imię i Nazwisko. W tym przykładzie & operator służy do łączenia pola Imię, znaku spacji (ujętego w cudzysłów) i pola Nazwisko.
=Left([ProductName], 1) Używa funkcji Left w celu wyświetlenia pierwszego znaku wartości pola lub kontrolki o nazwie NazwaProduktu.
=Right([AssetCode], 2) Używa funkcji Right w celu wyświetlenia dwóch ostatnich znaków wartości pola lub kontrolki o nazwie KodSprzętu.
=Trim([Address]) Używa funkcji Trim w celu wyświetlenia wartości kontrolki Adres i usunięcia wszelkich spacji wiodących i końcowych.
=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode]) Używa funkcji IIf w celu wyświetlenia wartości kontrolek Miasto i KodPocztowy, jeśli wartość kontrolki Region jest równa null. W przeciwnym razie wyświetlane są wartości kontrolek Miasto, Region i KodPocztowy oddzielone spacjami.
=[City] & (" " + [Region]) & " " & [PostalCode] Używa operatora + i funkcji propagacji wartości null w celu wyświetlenia wartości kontrolek Miasto i Kod Pocztowy, jeśli wartość pola lub kontrolki Region ma wartość null. W przeciwnym razie wyświetlane są wartości pól lub kontrolek Miasto, Region i Kod Pocztowy oddzielone spacjami.
Funkcja propagacji wartości pustych oznacza, że jeśli dowolny składnik wyrażenia jest pusty, całe wyrażenie również jest puste. Operator + obsługuje propagację wartości null; & operator tego nie robi.

Początek strony

Nagłówki i stopki

Do wyświetlania lub drukowania numerów stron w formularzach lub raportach służą właściwości Page i Pages. Właściwości Page i Pages są dostępne tylko podczas drukowania lub wyświetlania podglądu, więc nie są wyświetlane w arkuszu właściwości formularza ani raportu. Zazwyczaj te właściwości są umieszczane w polu tekstowym w sekcji nagłówka lub stopki formularza lub raportu i używane w formie wyrażenia, takiego jak te przedstawione w poniższej tabeli.

Aby uzyskać więcej informacji na temat używania nagłówków i stopek w formularzach oraz raportach, zobacz artykuł Wstawianie numerów stron do formularza lub raportu.

Wyrażenie Wynik
=[Page] 1
="Page " & [Page] Strona 1
="Page " & [Page] & " of " & [Pages] Strona 1 z 3
=[Page] & " of " & [Pages] & " Pages" 1 z 3 stron
=[Page] & "/" & [Pages] & " Pages" 1/3 stron
=[Country/region] & " - " & [Page] UK - 1
=Format([Page], "000") 001
="Printed on: " & Date() Wydrukowano w dniu: 31/12/17

Początek strony

Operacje arytmetyczne

Za pomocą wyrażeń można dodawać, odejmować, mnożyć, dzielić wartości z dwóch lub większej liczby pól bądź kontrolek. Można również przy ich użyciu wykonywać operacje arytmetyczne na datach. Załóżmy na przykład, że istnieje pole tabeli typu Data/godzina o nazwie DataWymagana. W polu lub w kontrolce powiązanej z polem wyrażenie =[RequiredDate] - 2 zwraca wartość daty/godziny równą dwóch dni przed bieżącymi wartościami w polu DataDawymagana.

Wyrażenie Wynik
=[Subtotal]+[Freight] Suma wartości pól lub kontrolek SumaCzęściowa i Fracht.
=[RequiredDate]-[ShippedDate] Różnica między wartościami daty pól lub kontrolek DataDostawy i DataWysyłki.
=[Price]*1.06 Iloczyn wartości pola lub kontrolki Cena i liczby 1,06 (dodaje 6 procent do wartości Cena).
=[Quantity]*[Price] Iloczyn wartości pól lub kontrolek Ilość i Cena.
=[EmployeeTotal]/[CountryRegionTotal] Iloraz wartości pól lub kontrolek SumaDlaPracownika i SumaDlaKrajuRegionu.

Uwaga Jeśli w wyrażeniu zostanie użyty operator arytmetyczny (+, -, *i /) i wartość jednej z kontrolek w wyrażeniu będzie równa null, wynik całego wyrażenia będzie mieć wartość null — jest to nazywane propagacja wartości null. Jeśli dowolne rekordy w jednej z kontrolek użytych w wyrażeniu mogą mieć wartość null, można uniknąć propagacji wartości Null, konwertując wartość null na zero za pomocą funkcji Nz — na przykład =Nz([Subtotal])+Nz([Freight]).

Początek strony

Wartości znajdujące się w innych kontrolkach

Czasami potrzebna jest wartość istniejąca w innym miejscu, na przykład w polu lub kontrolce w innym formularzu albo raporcie. Aby zwrócić wartość z innego pola lub innej kontrolki, można użyć wyrażenia.

W tabeli podano przykłady wyrażeń, które można stosować w kontrolkach obliczeniowych formularzy.

Wyrażenie Wynik
=Forms![Orders]![OrderID] Wartość kontrolki IdentyfikatorZamówienia w formularzu Zamówienia.
=Forms![Orders]![Orders Subform].Form![OrderSubtotal] Wartość kontrolki SumaCzęściowaZamówienia w podformularzu o nazwie Zamówienia1 formularza Zamówienia.
=Forms![Orders]![Orders Subform]![ProductID].Column(2) Wartość trzeciej kolumny w kontrolce IdentyfikatorProduktu, wielokolumnowym polu listy w podformularzu o nazwie Zamówienia1, zawartym w formularzu Zamówienia. (Należy zwrócić uwagę, że 0 odnosi się do pierwszej kolumny, 1 do drugiej kolumny itd.).
=Forms![Orders]![Orders Subform]![Price] * 1.06 Iloczyn liczby 1,06 i wartości kontrolki Cena w podformularzu o nazwie Zamówienia1 formularza Zamówienia (wartość kontrolki Cena jest zwiększana o 6 procent).
=Parent![OrderID] Wartość kontrolki IdentyfikatorZamówienia w formularzu głównym lub nadrzędnym bieżącego podformularza.

Wyrażenia w poniższej tabeli przedstawiają niektóre sposoby używania kontrolek obliczeniowych w raportach. Wyrażenia odwołują się do właściwości Report.

Wyrażenie Wynik
=Report![Invoice]![OrderID] Wartość kontrolki o nazwie „IdentyfikatorZamówienia” w raporcie o nazwie „Faktura”.
=Report![Summary]![Summary Subreport]![SalesTotal] Wartość kontrolki PodsumowanieSprzedaży w podraporcie o nazwie RaportPodsumowujący w raporcie Podsumowanie.
=Parent![OrderID] Wartość kontrolki IdentyfikatorZamówienia w raporcie głównym lub nadrzędnym bieżącego podraportu.

Początek strony

Funkcje liczące, sumujące i uśredniające wartości

Aby obliczyć wartości pól lub kontrolek można użyć funkcji agregującej. Można na przykład obliczyć sumę wartości grupy dla stopki grupy w raporcie lub sumę częściową zamówienia dla pozycji formularza. Można również policzyć pozycje w polu lub polach albo obliczyć wartość średnią.

Wyrażenia w poniższej tabeli pokazują niektóre sposoby użycia takich funkcji jak Avg, Count i Sum.

Wyrażenie Opis
=Avg([Freight]) Używa funkcji Avg w celu wyświetlenia wartości średniej pola tabeli lub kontrolki o nazwie „Fracht”.
=Count([OrderID]) Używa funkcji Count w celu wyświetlenia liczby rekordów w kontrolce IdentyfikatorZamówienia.
=Sum([Sales]) Używa funkcji Sum w celu wyświetlenia sumy wartości w kontrolce Sales.
=Sum([Quantity]*[Price]) Używa funkcji Sum w celu wyświetlenia sumy iloczynów wartości kontrolek Quantity i Price.
=[Sales]/Sum([Sales])*100 Wyświetla obrót procentowy wyrażony stosunkiem wartości kontrolki Sprzedaż do sumy wszystkich wartości kontrolki Sprzedaż.
Jeśli właściwość Format kontrolki zostanie ustawiona na wartość Procent, nie uwzględniaj *100 jej w wyrażeniu.

Aby uzyskać więcej informacji na temat używania funkcji agregujących i sumowania wartości pól lub kolumn, zobacz artykuły Sumowanie danych przy użyciu zapytania, Zliczanie danych przy użyciu zapytania, Wyświetlanie sum kolumn przy użyciu wiersza sumy i Wyświetlanie sum kolumn w arkuszu danych.

Początek strony

Funkcje agregujące w języku SQL

Aby selektywnie zsumować lub policzyć wartości, należy skorzystać z funkcji nazywanej funkcją agregującą SQL lub dziedziny. „Dziedzina” składa się z co najmniej jednego pola w co najmniej jednej tabeli albo co najmniej jednej kontrolki w co najmniej jednym formularzu lub raporcie. Można na przykład dopasować wartości z pola tabeli do wartości w kontrolce formularza.

Wyrażenie Opis
=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms("Suppliers")("[SupplierID]")) Używa funkcji DLookup w celu zwrócenia wartości pola Przedstawiciel w tabeli Dostawcy dla rekordu o wartości pola IdentyfikatorDostawcy równej wartości kontrolki IdentyfikatorDostawcy w formularzu Dostawcy.
=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms![New Suppliers]![SupplierID]) Używa funkcji DLookup w celu zwrócenia wartości pola Przedstawiciel w tabeli Dostawcy dla rekordu o wartości pola IdentyfikatorDostawcy równej wartości kontrolki IdentyfikatorDostawcy w formularzu Nowi dostawcy.
=DSum("[OrderAmount]", "[Orders]", "[CustomerID] = 'RATTC'") Używa funkcji DSum w celu zwrócenia sumy wartości w polu WartośćZamówienia w tabeli Zamówienia dla rekordów, w których pole IdentyfikatorKlienta ma wartość RATTC.
=DCount("[Retired]","[Assets]","[Retired]=Yes") Używa funkcji DCount w celu zwrócenia liczby wystąpień wartości Tak w polu Wycofany (pole typu Tak/Nie) w tabeli Majątek.

Początek strony

Operacje na datach

Śledzenie dat i godzin jest podstawowym działaniem w bazie danych. Można na przykład obliczyć, ile dni upłynęło od czasu wystawienia faktury w celu wiekowania należności. Daty i godziny można formatować na wiele sposobów, jak pokazano w poniższej tabeli.

Wyrażenie Opis
=Date() Używa funkcji Date w celu wyświetlenia bieżącej daty w postaci mm-dd-yy, gdzie mm jest miesiąc (od 1 do 12), dd jest dniem (od 1 do 31) i yy dwiema ostatnimi cyframi roku (od 1980 do 2099).
=Format(Now(), "ww") Używa funkcji Format w celu wyświetlenia numeru tygodnia roku dla bieżącej daty, gdzie ww reprezentuje tygodnie od 1 do 53.
=DatePart("yyyy", [OrderDate]) Używa funkcji DatePart w celu wyświetlenia roku w formacie czterocyfrowym dla wartości kontrolki OrderDate.
=DateAdd("y", -10, [PromisedDate]) Używa funkcji DateAdd w celu wyświetlenia daty wcześniejszej o 10 dni od wartości kontrolki PromisedDate.
=DateDiff("d", [OrderDate], [ShippedDate]) Używa funkcji DateDiff w celu wyświetlenia liczby dni między wartościami kontrolek OrderDate i ShippedDate.
=[InvoiceDate] + 30 Używa operacji arytmetycznych na datach w celu obliczenia daty przypadającej 30 dni po dacie w polu lub kontrolce DataFaktury.

Początek strony

Warunki obejmujące tylko dwie wartości

Przykładowe wyrażenia w poniższej tabeli używają funkcji IIf w celu zwrócenia jednej z dwóch możliwych wartości. Funkcja IIf ma trzy argumenty: pierwszy argument jest wyrażeniem, które musi zwrócić wartość True lub False wartość. Drugim argumentem jest wartość zwracana w przypadku spełnienia warunku wyrażenia. Trzecim — wartość zwracana w przypadku niespełnienia warunku wyrażenia.

Wyrażenie Opis
=IIf([Confirmed] = "Yes", "Order Confirmed", "Order Not Confirmed") Używa funkcji IIf (Immediate If) w celu wyświetlenia komunikatu "Zamówienie potwierdzone", jeśli wartość kontrolki Potwierdzone jest Yes; w przeciwnym razie wyświetla komunikat "Order Not Confirmed."
=IIf(IsNull([Country/region]), " ", [Country]) Używa funkcji IIf i IsNull w celu wyświetlenia pustego ciągu, jeśli wartość kontrolki Country/region ma wartość null. W przeciwnym razie wyświetla wartość kontrolki Country/region.
=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode]) Używa funkcji IIf i IsNull w celu wyświetlenia wartości kontrolek Miasto i KodPocztowy, jeśli wartość kontrolki Region jest równa null. W przeciwnym razie wyświetla wartości pól lub kontrolek Miasto, Region i KodPocztowy.
=IIf(IsNull([RequiredDate]) Or IsNull([ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate]) Używa funkcji IIf i IsNull w celu wyświetlenia komunikatu „Uwaga: brak daty!”, jeśli wynik odejmowania wartości pola DataWysyłki od wartości pola DataDostawy jest równy null. W przeciwnym razie wyświetla interwał między wartościami dat w polach DataDostawy i DataWysyłki.

Początek strony

Zapytania i filtry

Ta sekcja zawiera przykłady wyrażeń używanych w celu utworzenia pola obliczeniowego w zapytaniu lub wprowadzenia kryteriów do zapytania. Pole obliczeniowe jest kolumną w zapytaniu zawierającą wynik wyrażenia.. Przy jego użyciu można na przykład obliczyć wartości, połączyć wartości tekstowe, takie jak imię i nazwisko, lub sformatować część daty.

Używając kryteriów w zapytaniu, można ograniczyć liczbę rekordów, na których są wykonywane operacje. Za pomocą Between operatora można na przykład podać datę początkową i końcową oraz ograniczyć wyniki zapytania do zamówień wysłanych między tymi datami.

Poniżej przedstawiono przykłady wyrażeń używanych w zapytaniach.

Operacje tekstowe

Wyrażenia w poniższej tabeli używają operatorów i + do & łączenia ciągów tekstowych, używania wbudowanych funkcji do operowania na ciągu tekstowym lub w inny sposób operowania na tekście w celu utworzenia pola obliczeniowego.

Wyrażenie Opis
FullName: [FirstName] & " " & [LastName] Tworzy pole o nazwie ImięNazwisko wyświetlające wartości pól Imię i Nazwisko oddzielone spacją.
Address2: [City] & " " & [Region] & " " & [PostalCode] Tworzy pole o nazwie Adres2 wyświetlające wartości pól Miasto, Region i KodPocztowy oddzielone spacjami.
ProductInitial: Left([ProductName], 1) Tworzy pole o nazwie InicjałProduktu, a następnie używa funkcji Left w celu wyświetlenia w polu InicjałProduktu pierwszego znaku wartości pola NazwaProduktu.
TypeCode: Right([AssetCode], 2) Tworzy pole o nazwie KodTypu, a następnie używa funkcji Right w celu wyświetlenia ostatnich dwóch znaków wartości pola KodSprzętu.
AreaCode: Mid([Phone],2,3) Tworzy pole o nazwie Kierunkowy, a następnie używa funkcji Mid w celu wyświetlenia trzech znaków, licząc od drugiego znaku wartości pola Telefon.
ExtendedPrice: CCur([Order Details].[Unit Price]*[Quantity]*(1-[Discount])/100)*100 Przypisuje nazwę CenaKońcowa polu obliczeniowemu; za pomocą funkcji CCur oblicza sumy pozycji z użyciem zastosowanego rabatu.

Początek strony

Operacje arytmetyczne

Za pomocą wyrażeń można dodawać, odejmować, mnożyć, dzielić wartości z dwóch lub większej liczby pól bądź kontrolek. Można również wykonywać operacje arytmetyczne na datach. Załóżmy na przykład, że istnieje pole typu Data/godzina o nazwie DataWymagana. =[RequiredDate] - 2 Wyrażenie zwraca wartość typu Data/godzina równą dwóm dniom przed wartością w polu DataDawymagane.

Wyrażenie Opis
PrimeFreight: [Freight] * 1.1 Tworzy pole o nazwie FrachtPriorytetowy, a następnie wyświetla w tym polu wartość opłat frachtowych powiększoną o 10%.
OrderAmount: [Quantity] * [UnitPrice] Tworzy pole o nazwie WielkośćZamówienia, a następnie wyświetla iloczyn wartości pól Ilość i CenaJednostkowa.
LeadTime: [RequiredDate] - [ShippedDate] Tworzy pole o nazwie Wyprzedzenie, a następnie wyświetla różnicę między wartościami pól DataDostawy i DataWysyłki.
TotalStock: [UnitsInStock]+[UnitsOnOrder] Tworzy pole o nazwie ZapasCałkowity, a następnie wyświetla sumę wartości pól StanMagazynu i JednostkiZamówione.
FreightPercentage: Sum([Freight])/Sum([Subtotal]) *100 Tworzy pole o nazwie FrachtProcentowo, a następnie wyświetla procent opłaty frachtowej w każdej sumie częściowej. Wyrażenie używa funkcji Sum w celu podsumowania wartości w polu Fracht, a następnie podzielenia tych sum przez sumę wartości w polu SumaCzęściowa.
Aby użyć tego wyrażenia, należy przekonwertować zapytanie wybierające na zapytanie podsumowujące, ponieważ konieczne jest użycie wiersza Podsumowanie w siatce projektu i ustawienie wartości komórki Podsumowanie tego pola na Wyrażenie.
Aby uzyskać więcej informacji na temat tworzenia zapytań podsumowujących, zobacz artykuł Sumowanie danych przy użyciu zapytania.
Jeśli właściwość Format pola zostanie ustawiona na wartość Procent, nie dołączaj *100wartości .

Aby uzyskać więcej informacji na temat używania funkcji agregujących i sumowania wartości pól lub kolumn, zobacz artykuły Sumowanie danych przy użyciu zapytania, Zliczanie danych przy użyciu zapytania, Wyświetlanie sum kolumn przy użyciu wiersza sumy i Wyświetlanie sum kolumn w arkuszu danych.

Początek strony

Operacje na datach

W niemal wszystkich bazach danych są przechowywane i śledzone daty oraz godziny. Praca z datami i godzinami w programie Access jest możliwa po ustawieniu w polach tabeli zawierających daty i godziny typu danych Data/godzina. W programie Access możliwe jest wykonanie obliczeń arytmetycznych na datach. Można na przykład obliczyć, ile dni upłynęło od czasu wystawienia faktury w celu wiekowania należności.

Wyrażenie Opis
LagTime: DateDiff("d", [OrderDate], [ShippedDate]) Tworzy pole o nazwie CzasZwłoki, a następnie używa funkcji DateDiff w celu wyświetlenia liczby dni między datą zamówienia a datą wysyłki.
YearHired: DatePart("yyyy",[HireDate]) Tworzy pole o nazwie RokZatrudnienia, a następnie używa funkcji DatePart w celu wyświetlenia roku zatrudnienia każdego pracownika.
MinusThirty: Date( )- 30 Tworzy pole o nazwie Minus30, a następnie używa funkcji Date w celu wyświetlenia daty wcześniejszej o 30 dni od bieżącej daty.

Początek strony

Funkcje agregujące w języku SQL

Wyrażenia w poniższej tabeli używają funkcji języka SQL (Structured Query Language) w celu zagregowania lub podsumowania danych. Te funkcje (na przykład Sum, Count i Avg) często są nazywane funkcjami agregującymi.

Oprócz funkcji agregujących program Access udostępnia również funkcje agregujące dziedziny służące do selektywnego sumowania lub liczenia wartości. Dzięki nim możliwe jest na przykład policzenie wartości tylko z określonego zakresu lub wyszukanie wartości w innej tabeli. Zbiór funkcji agregujących dziedziny zawiera funkcję DSum, funkcję DCount i funkcję DAvg.

Aby obliczyć sumy, często jest konieczne utworzenie zapytania podsumowującego. Zapytania podsumowującego należy na przykład użyć do podsumowania danych w grupach. Aby przejść do zapytania podsumowującego z widoku siatki projektu, kliknij pozycję Sumy w menu Widok.

Wyrażenie Opis
RowCount: Count(*) Tworzy pole o nazwie LicznikWierszy, a następnie używa funkcji Count w celu policzenia liczby rekordów w zapytaniu, w tym również rekordów z polami o wartości null (pustymi).
FreightPercentage: Sum([Freight])/Sum([Subtotal]) *100 Tworzy pole o nazwie FrachtProcentowo, a następnie oblicza procent, jaki stanowią opłaty frachtowe w każdej sumie częściowej, przez podzielenie sumy wartości pola Fracht przez sumę wartości pola SumaCzęściowa. (W tym przykładzie użyto funkcji Sum).
Tego wyrażenia należy użyć z zapytaniem podsumowującym. Jeśli właściwość Format pola zostanie ustawiona na wartość Procent, nie dołączaj *100wartości .
Aby uzyskać więcej informacji na temat tworzenia zapytań podsumowujących, zobacz artykuł Sumowanie danych przy użyciu zapytania.
AverageFreight: DAvg("[Freight]", "[Orders]") Tworzy pole o nazwie ŚredniFracht, a następnie używa funkcji DAvg w celu obliczenia średniej opłaty frachtowej dla wszystkich zamówień połączonych w zapytaniu podsumowującym.

Początek strony

Pola z brakującymi danymi

Przedstawione poniżej wyrażenia działają z polami, w których może brakować informacji, czyli na przykład z polami mającymi wartość null (nieznaną lub niezdefiniowaną). Często spotyka się wartości null, takie jak nieznana cena nowego produktu lub wartość, którą współpracownik zapomniał dodać do zamówienia. Zdolność bazy danych do wyszukiwania i przetwarzania wartości null może być krytyczna dla jej działania, a wyrażenia w poniższej tabeli stanowią przykłady typowych sposobów przetwarzania wartości null.

Wyrażenie Opis
CurrentCountryRegion: IIf(IsNull([CountryRegion]), " ", [CountryRegion]) Tworzy pole o nazwie BieżącyKrajRegion, a następnie używa funkcji IIf i IsNull w celu wyświetlenia pustego ciągu w polu, jeśli pole KrajRegion ma wartość null. W przeciwnym razie wyświetla zawartość pola KrajRegion.
LeadTime: IIf(IsNull([RequiredDate] - [ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate]) Tworzy pole o nazwie Wyprzedzenie, a następnie używa funkcji IIf i IsNull w celu wyświetlenia komunikatu „Uwaga: brak daty!”, jeśli jedno z pól DataWymagana lub DataWysyłki ma wartość null. W przeciwnym razie wyświetla różnicę w tych datach.
SixMonthSales: Nz([Qtr1Sales]) + Nz([Qtr2Sales]) Tworzy pole o nazwie SprzedażPółroczna, a następnie wyświetla sumę wartości pól SprzedażKw1 i SprzedażKw2, używając wcześniej funkcji Nz w celu przekonwertowania wszystkich wartości null na zero.

Początek strony

Pola obliczeniowe z podzapytaniami

Pole obliczeniowe można utworzyć także przy użyciu zapytania zagnieżdżonego, nazywanego również podzapytaniem. Wyrażenie w poniższej tabeli jest przykładem pola obliczeniowego pobierającego wyniki z podzapytania.

Wyrażenie Opis
Cat: (SELECT [CategoryName] FROM [Categories] WHERE [Products].[CategoryID]=[Categories].[CategoryID]) Tworzy pole o nazwie Kategoria, a następnie wyświetla wartość pola NazwaKategorii, jeśli wartość IdentyfikatorKategorii z tabeli Kategorie jest taka sama jak wartość IdentyfikatorKategorii z tabeli Produkty.

Początek strony

Dopasowywanie wartości tekstowych

Przykładowe wyrażenia w poniższej tabeli przedstawiają kryteria dopasowujące cały tekst lub jego część.

Pole Wyrażenie Opis
MiastoOdbiorcy "London" Wyświetla zamówienia wysłane do Krakowa.
MiastoOdbiorcy "London" Or "Hedge End" Or Używa operatora do wyświetlania zamówień wysłanych do Londynu lub Hedge End.
KrajRegionWysyłki In("Canada", "UK") Używa operatora do In wyświetlania zamówień wysłanych do Kanady lub Wielkiej Brytanii.
KrajRegionWysyłki Not "USA" Not Używa operatora do wyświetlania zamówień wysłanych do krajów/regionów innych niż USA.
NazwaProduktu Not Like "C*" Not Używa operatora i symbolu wieloznacznego * do wyświetlania produktów, których nazwy nie zaczynają się od komórki C.
NazwaFirmy >="N" Wyświetla zamówienia wysłane do firm, których nazwy zaczynają się od liter N za pośrednictwem Z.
KodProduktu Right([ProductCode], 2)="99" Używa funkcji Right w celu wyświetlenia zamówień z wartościami ProductCode, które kończą się ciągiem 99.
NazwaOdbiorcy Like "S*" Wyświetla zamówienia wysłane do klientów, których nazwy zaczynają się od litery S.

Początek strony

Kryteria oparte na zgodności dat

Wyrażenia w poniższej tabeli przedstawiają sposób użycia dat i związanych z nimi funkcji w wyrażeniach kryteriów. Aby uzyskać więcej informacji na temat wprowadzania i używania wartości dat, zobacz artykuł Formatowanie pola daty i godziny.

Pole Wyrażenie Opis
DataWysyłki #2/2/2017# Wyświetla zamówienia wysłane 2 lutego 2017 r.
DataWysyłki Date() Wyświetla zamówienia wysłane danego dnia.
DataWymagana Between Date( ) And DateAdd("m", 3, Date( )) Between...And Używa operatora oraz funkcji DateAdd i Date w celu wyświetlenia zamówień wymaganych od daty bieżącej do trzech miesięcy od daty bieżącej.
DataZamówienia < Date( ) - 30 Używa funkcji Date w celu wyświetlenia zamówień starszych niż 30 dni.
DataZamówienia Year([OrderDate])=2017 Używa funkcji Year w celu wyświetlenia zamówień złożonych w roku 2017.
DataZamówienia DatePart("q", [OrderDate])=4 Używa funkcji DatePart w celu wyświetlenia zamówień z czwartego kwartału.
DataZamówienia DateSerial(Year ([OrderDate]), Month([OrderDate])+1, 1)-1 Używa funkcji DateSerial, Year i Month w celu wyświetlenia zamówień z ostatniego dnia każdego miesiąca.
DataZamówienia Year([OrderDate])= Year(Now()) And Month([OrderDate])= Month(Now()) Używa funkcji Year i Month oraz operatora And w celu wyświetlenia zamówień dla bieżącego roku i miesiąca.
DataWysyłki Between #1/5/2017# And #1/10/2017# Between...AndUżywa operatora do wyświetlania zamówień wysłanych nie wcześniej niż 5 stycznia 2017 r. i nie później niż 10 stycznia 2017 r.
DataWymagana Between Date( ) And DateAdd("M", 3, Date( )) Używa operatora do Between...And wyświetlania zamówień wymaganych między dzisiejszą datą a trzema miesiącami od daty bieżącej.
DataUrodzenia Month([BirthDate])=Month(Date()) Używa funkcji Month i Date w celu wyświetlenia danych pracowników, których urodziny przypadają w danym miesiącu.

Początek strony

Znajdowanie brakujących danych

Wyrażenia w poniższej tabeli działają z polami, w których potencjalnie brakuje informacji — czyli takimi, które mogą zawierać wartość null lub ciąg o zerowej długości. Wartość null oznacza brak informacji. Nie oznacza ona wartości zerowej ani żadnej innej wartości. Program Access umożliwia obsługę pól z brakującymi informacjami, ponieważ jest ona niezbędna dla zapewnienia integralności bazy danych. W rzeczywistym świecie często brakuje informacji, nawet jeśli to tylko stan tymczasowy (na przykład gdy nie ustalono jeszcze ceny nowego produktu). Dlatego baza danych odzwierciedlająca element świata rzeczywistego, na przykład firmę, musi mieć możliwość rejestrowania braku informacji. Do rozpoznawania wartości null w polu lub kontrolce służy funkcja IsNull, natomiast funkcja Nz służy do konwertowania wartości null na zero.

Pole Wyrażenie Opis
RegionOdbiorcy Is Null Wyświetla zamówienia klientów, których pole RegionOdbiorcy zawiera wartość null (brak wartości).
RegionOdbiorcy Is Not Null Wyświetla zamówienia klientów, których pole RegionOdbiorcy nie jest puste.
Faks "" Wyświetla zamówienia klientów, którzy nie mają urządzeń faksujących, na co wskazuje ciąg zerowej długości w polu Faks, zamiast wartości null (brak wartości).

Początek strony

Wzorce dopasowywania rekordów oparte na operatorze Like

Operator Like zapewnia dużą elastyczność podczas próby dopasowania wierszy zgodnych ze wzorcem, ponieważ można go używać Like z symbolami wieloznaczowymi i definiować wzorce zgodne z programem Access. Na przykład * symbol wieloznaczny (gwiazdka) odpowiada sekwencji znaków dowolnego typu i ułatwia znalezienie wszystkich nazw rozpoczynających się od litery. Za pomocą wyrażenia Like "S*" można na przykład znaleźć wszystkie nazwy zaczynające się od litery S. Aby uzyskać więcej informacji, zobacz artykuł Operator Like.

Pole Wyrażenie Opis
NazwaOdbiorcy Like "S*" Znajduje wszystkie rekordy, w których wartość pola NazwaOdbiorcy rozpoczyna się od litery S.
NazwaOdbiorcy Like "*Imports" Znajduje wszystkie rekordy, w których wartość pola NazwaOdbiorcy kończy się wyrazem „Contoso”.
NazwaOdbiorcy Like "[A-D]*" Znajduje wszystkie rekordy, w których wartość pola NazwaOdbiorcy rozpoczyna się od litery A, B, C lub D.
NazwaOdbiorcy Like "*ar*" Znajduje wszystkie rekordy, w których wartość pola NazwaOdbiorcy zawiera sekwencję liter „ar”.
NazwaOdbiorcy Like "Maison Dewe?" Znajduje wszystkie rekordy, w których wartość pola NazwaOdbiorcy zawiera wyraz „Maison” w pierwszej części wartości i pięcioliterowy ciąg, w którym cztery pierwsze litery to „Dewe”, a ostatnia litera jest nieznana.
NazwaOdbiorcy Not Like "A*" Znajduje wszystkie rekordy, w których wartość pola NazwaOdbiorcy nie rozpoczyna się od litery A.

Początek strony

Dopasowywanie wierszy za pomocą funkcji agregujących SQL

Aby selektywnie zsumować, policzyć lub uśrednić wartości, należy skorzystać z funkcji SQL lub agregującej domeny. Można na przykład zliczyć tylko wartości z określonego zakresu lub prowadzące do uzyskania wartości Tak. Innym przykładem może być potrzeba wyszukania wartości w innej tabeli w celu wyświetlenia tej wartości. W przykładowych wyrażeniach w poniższej tabeli użyto funkcji agregujących dziedziny w celu wykonania obliczeń na zbiorze wartości i użycia wyników jako kryterium zapytania.

Pole Wyrażenie Opis
Fracht > (DStDev("[Freight]", "Orders") + DAvg("[Freight]", "Orders")) Używa funkcji DStDev i DAvg w celu wyświetlenia wszystkich zamówień, w których koszty frachtu przekroczyły wartość średniego frachtu powiększoną o odchylenie standardowe.
Ilość > DAvg("[Quantity]", "[Order Details]") Używa funkcji DAvg w celu wyświetlenia produktów zamówionych w ilościach przekraczających średnią wielkość zamówienia.

Początek strony

Dopasowywanie pól przy użyciu podzapytań

Wartość do użycia jako kryterium można także obliczyć przy użyciu zapytania zagnieżdżonego, nazywanego również podzapytaniem. Przykładowe wyrażenia w poniższej tabeli dopasowują wiersze na podstawie wyników zwróconych przez podzapytanie.

Pole Wyrażenie Wyświetlana wartość
CenaJednostkowa (SELECT [UnitPrice] FROM [Products] WHERE [ProductName] = "Aniseed Syrup") Produkty, których cena jest taka sama, jak cena Syropu anyżowego.
CenaJednostkowa >(SELECT AVG([UnitPrice]) FROM [Products]) Produkty, których cena przekracza średnią cenę.
Wynagrodzenia > ALL (SELECT [Salary] FROM [Employees] WHERE ([Title] LIKE "*Manager*") OR ([Title] LIKE "*Vice President*")) Wynagrodzenie każdego przedstawiciela handlowego zarabiającego więcej niż każdy z pracowników, których nazwa stanowiska zawiera słowo „Kierownik” lub „Wiceprezes”.
WielkośćZamówienia: [CenaJednostkowa] * [Ilość] > (SELECT AVG([UnitPrice] * [Quantity]) FROM [Order Details]) Zamówienia, których suma jest większa niż średnia wartość zamówienia.

Początek strony

Zapytania aktualizujące

Zapytanie aktualizujące służy do modyfikowania danych w co najmniej jednym istniejącym polu bazy danych. Na przykład można przy jego użyciu zastąpić wartości lub usunąć je całkowicie. Poniższa tabela przedstawia niektóre sposoby użycia wyrażeń w zapytaniach aktualizujących. Tych wyrażeń należy użyć w wierszu Aktualizacja do w siatce projektu zapytania dla pola, które ma zostać zaktualizowane.

Aby uzyskać więcej informacji o tworzeniu zapytań aktualizujących, zobacz temat Tworzenie i uruchamianie zapytania aktualizującego.

Pole Wyrażenie Wynik
Tytuł "Salesperson" Zmienia wartość tekstową na wyraz „Sprzedawca”.
RozpoczęcieProjektu #8/10/17# Zmienia datę na 10 sierpnia 2017 r.
Wycofany Yes Zmienia wartość Nie w polu typu Tak/Nie na Tak.
NumerCzęści "PN" & [PartNumber] Dodaje oznaczenie „NC” na początku każdego wskazanego numeru części.
SumaPozycji [UnitPrice] * [Quantity] Oblicza iloczyn ceny jednostkowej i ilości.
Fracht [Freight] * 1.5 Zwiększa opłaty przewozowe o 50 procent.
Sprzedaż DSum("[Quantity] * [UnitPrice]", "Order Details", "[ProductID]=" & [ProductID]) Jeśli identyfikatory produktów w bieżącej tabeli odpowiadają identyfikatorom produktów w tabeli Szczegóły zamówień, aktualizuje podsumowania sprzedaży na podstawie ilości i ceny jednostkowej produktu.
KodPocztowyOdbiorcy Right([ShipPostalCode], 5) Odrzuca początkowe znaki, pozostawiając pięć pierwszych znaków od prawej.
CenaJednostkowa Nz([UnitPrice]) Zmienia wartość null (wartość nieznaną lub niezdefiniowaną) na zero (0) w polu o nazwie UnitPrice.

Początek strony

Instrukcje SQL

SQL jest językiem używanym w programie Access do tworzenia zapytań. Każde zapytanie tworzone w widoku projektu można przedstawić przy użyciu języka SQL. Aby wyświetlić instrukcję SQL dla danego zapytania,kliknij polecenie Widok SQL w menu Widok. W poniższej tabeli przedstawiono przykłady instrukcji SQL zawierających wyrażenia.

Instrukcja SQL zawierająca wyrażenie Wynik
SELECT [FirstName],[LastName] FROM [Employees] WHERE [LastName]="Danseglio"; Wyświetla wartości pól Imię i Nazwisko pracowników o nazwisku Danseglio.
SELECT [ProductID],[ProductName] FROM [Products] WHERE [CategoryID]=Forms![New Products]![CategoryID]; Wyświetla wartości pól IdentyfikatorProduktu i NazwaProduktu z tabeli Produkty tych rekordów, w których wartość IdentyfikatorKategorii zgadza się z wartością IdentyfikatorKategorii w otwartym formularzu NoweProdukty.
SELECT Avg([ExtendedPrice]) AS [Average Extended Price] FROM [Order Details Extended] WHERE [ExtendedPrice]>1000; Oblicza średnią cenę końcową dla zamówień, których wartość w polu CenaRozszerzona przekracza wartość 1000, a następnie wyświetla wynik w polu o nazwie „Średnia cena końcowa”.
SELECT [CategoryID], Count([ProductID]) AS [CountOfProductID] FROM [Products] GROUP BY [CategoryID] HAVING Count([ProductID])>10; W polu o nazwie „Liczba ID produktów” wyświetla łączną liczbę produktów dla kategorii, które zawierają ponad 10 produktów.

Początek strony

Wyrażenia używane w tabelach

Dwa najbardziej typowe sposoby użycia wyrażeń w tabelach dotyczą przypisywania wartości domyślnej i tworzenia reguły poprawności.

Domyślne wartości pól

Podczas projektowania bazy danych może wystąpić potrzeba przypisania wartości domyślnej do pola lub kontrolki. Program Access wprowadza wówczas wartość domyślną podczas tworzenia nowego rekordu z danym polem lub obiektu zawierającego daną kontrolkę. Wyrażenia w poniższej tabeli przedstawiają przykłady wartości domyślnych dla pola lub kontrolki. Jeśli kontrolka jest powiązana z polem tabeli, które ma wartość domyślną, wartość domyślna kontrolki ma pierwszeństwo.

Pole Wyrażenie Domyślna wartość w polu
Ilość 1 1
Region "MT" MT
Region "New York, N.Y." Szczecin (Należy zauważyć, że wartość zawierająca znaki interpunkcyjne musi być ujęta w cudzysłowy).
Faks "" Ciąg zerowej długości wskazuje, że dane pole powinno być domyślnie puste, zamiast zawierać wartość null.
Data zamówienia Date( ) Dzisiejsza data
Data_wykonania Date() + 60 Data 60 dni późniejsza od daty bieżącej.

Początek strony

Reguły poprawności pól

Przy użyciu wyrażenia można utworzyć regułę sprawdzania poprawności dla pola lub kontrolki. Program Access wymusza wówczas tę regułę podczas wprowadzania danych do pola lub kontrolki. Aby utworzyć regułę sprawdzania poprawności, należy zmodyfikować właściwość RegułaPoprawności pola lub kontrolki. Należy również rozważyć ustawienie wartości właściwości KomunikatOBłędzie przechowującej tekst komunikatu wyświetlanego przez program Access w przypadku naruszenia reguły sprawdzania poprawności. W przypadku nieustawienia właściwości KomunikatOBłędzie program Access wyświetla domyślny komunikat o błędzie.

Przykłady w poniższej tabeli przedstawiają wyrażenia reguły sprawdzania poprawności dla właściwości RegułaPoprawności i przypisany do niej tekst właściwości KomunikatOBłędzie.

Właściwość RegułaPoprawności Właściwość KomunikatOBłędzie
<> 0 Wprowadź wartość różną od zera.
0 Or > 100 Wartość musi być równa 0 lub większa niż 100.
Like "K???" Wartość musi być złożona z czterech znaków i musi zaczynać się od litery K.
< #1/1/2017# Wprowadź datę wcześniejszą niż 01.01.2017.
>= #1/1/2017# And < #1/1/2008# Data musi przypadać w 2017 roku.

Aby uzyskać więcej informacji na temat sprawdzania poprawności danych, zobacz artykuł Tworzenie reguły sprawdzania poprawności do sprawdzania poprawności danych w polu.

Początek strony

Wyrażenia używane w makrach

W niektórych przypadkach może być konieczne wykonanie akcji lub serii akcji w makrze tylko w przypadku spełnienia określonego warunku. Załóżmy na przykład, że pewna akcja ma być wykonywana tylko wtedy, gdy wartość pola tekstowego Licznik wyniesie 10. Wyrażenie służy do definiowania warunku w bloku Jeżeli:


[Counter]=10

Podobnie jak w przypadku właściwości RegułaPoprawy wyrażenie w bloku Jeżeli jest wyrażeniem warunkowym. Musi rozpoznawać wartość albo wartość TrueFalse . Akcja jest wykonywana tylko wówczas, gdy warunek jest spełniony.

Wyrażenie służące do wykonania akcji If
[City]="Paris" Wrocław jest wartością kontrolki Miasto w formularzu, z poziomu którego zostało uruchomione makro.
DCount("[OrderID]", "Orders") > 35 Istnieje więcej niż 35 elementów w polu IdentyfikatorZamówienia tabeli Zamówienia.
DCount("*", "[Order Details]", "[OrderID]=" & Forms![Orders]![OrderID]) > 3 W tabeli Szczegóły zamówień istnieją więcej niż 3 elementy, dla których pole IdentyfikatorZamówienia jest zgodne z polem IdentyfikatorZamówienia w formularzu Zamówienia.
[ShippedDate] Between #2-Feb-2017# And #2-Mar-2017# Data w polu DataWysyłki w formularzu, z którego zostało uruchomione makro, nie jest wcześniejsza niż 2 lutego 2017 r. i nie późniejsza niż 2 marca 2017 r.
Forms![Products]![UnitsInStock] < 5 Wartość pola StanMagazynu w formularzu Produkty jest mniejsza niż 5.
IsNull([FirstName]) Wartość pola Imię w formularzu, z poziomu którego zostało uruchomione makro, jest równa null (nie ma wartości). To wyrażenie jest równoważne z wyrażeniem [Imię] Is Null.
[CountryRegion]="UK" And Forms![SalesTotals]![TotalOrds] > 100 Wartość pola KrajRegion w formularzu, z poziomu którego zostało uruchomione makro, jest równa Zjednoczone Królestwo, a wartość w polu PodsumowaniaZamówień formularza PodsumowaniaSprzedaży jest większa niż 100.
[CountryRegion] In ("France", "Italy", "Spain") And Len([PostalCode])<>5 Wartość pola KrajRegion w formularzu, z poziomu którego zostało uruchomione makro, jest równa Francja, Włochy lub Hiszpania, a długość kodu pocztowego jest inna niż 5 znaków.
MsgBox("Confirm changes?",1)=1 Kliknięto przycisk OK w oknie dialogowym wyświetlonym przez funkcję MsgBox. W przypadku kliknięcia w tym oknie dialogowym przycisku Anuluj program Access zignoruje akcję.

Początek strony

Zobacz też

Korzystanie z Konstruktora wyrażeń

Wprowadzenie do wyrażeń

Lekcja tworzenia wyrażeń

Przewodnik po składni wyrażenia