Przykłady wyrażeń

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

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    W formularzu lub raporcie można używać wyrażeń również w przypadku wyróżnienia danych przy użyciu formatowania warunkowego.

Operacje tekstowe

Wyrażenia w poniższej tabeli używają operatorów & i + w celu połączenia ciągów tekstowych, korzystają z wbudowanych funkcji do wykonywania działań na ciągu tekstowym lub operują na tekście w inny sposób, aby utworzyć kontrolkę obliczeniową.

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 połą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 pustych w celu wyświetlenia wartości kontrolek Miasto i KodPocztowy, jeśli wartość pola lub kontrolki Region jest równa null. W przeciwnym razie wyświetla wartości pól lub kontrolek Miasto, Region i KodPocztowy 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 funkcję propagacji wartości pustych, natomiast operator & nie obsługuje jej.

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ć i dzielić wartości z dwóch lub większej liczby pól bądź kontrolek. Przy ich użyciu można również wykonywać operacje arytmetyczne na datach. Załóżmy na przykład, że istnieje pole tabeli typu Data/godzina o nazwie RequiredDate. W polu lub kontrolce powiązanej z polem wyrażenie =[RequiredDate] - 2 zwraca wartość typu Data/godzina oznaczającą datę o dwa dni wcześniejszą niż wartość pola RequiredDate.

Wyrażenie

Wynik

=[Subtotal]+[Freight]

Suma wartości pól lub kontrolek Subtotal i Freight.

=[RequiredDate]-[ShippedDate]

Różnica między wartościami daty pól lub kontrolek RequiredDate i ShippedDate.

=[Price]*1.06

Iloczyn wartości pola lub kontrolki Price i liczby 1,06 (dodaje 6 procent do wartości Price).

=[Quantity]*[Price]

Iloczyn wartości pól lub kontrolek Quantity i Price.

=[EmployeeTotal]/[CountryRegionTotal]

Iloraz wartości pól lub kontrolek EmployeeTotal i CountryRegionTotal.

Uwaga    Jeśli w wyrażeniu używany jest operator arytmetyczny (+, -, *, and /), a jedna z kontrolek w wyrażeniu ma wartość null, to wynikiem całego wyrażenia również będzie wartość null — tak działa funkcja propagacji wartości pustych. Jeśli dowolny rekord w kontrolkach używanych w wyrażeniu może mieć wartość null, propagacji wartości pustych można uniknąć dzięki przekonwertowaniu wartości null na zero, korzystając z 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 OrderID w formularzu Orders.

=Forms![Orders]![Orders Subform].Form![OrderSubtotal]

Wartość kontrolki OrderSubtotal w podformularzu o nazwie Orders Subform formularza Orders.

=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 OrderID 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 „OrderID” w raporcie o nazwie „Invoice”.

=Report![Summary]![Summary Subreport]![SalesTotal]

Wartość kontrolki SalesTotal w podraporcie o nazwie Summary Subreport w raporcie Summary.

=Parent![OrderID]

Wartość kontrolki OrderID 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 „Freight”.

=Count([OrderID])

Używa funkcji Count w celu wyświetlenia liczby rekordów w kontrolce OrderID.

=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 jest ustawiona na Procent, w wyrażeniu nie należy umieszczać elementu *100.

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, Zliczanie wierszy w arkuszu danych 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 funkcją agregującą 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 Retired (pole typu Tak/Nie) w tabeli Assets.

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 formacie mm-dd-yy, gdzie mm to miesiąc (1–12), dd to dzień (1–31), a yy to dwie ostatnie cyfry roku (1980–2099).

=Format(Now(), "ww")

Używa funkcji Format w celu wyświetlenia numeru tygodnia roku dla bieżącej daty, gdzie ww należy do przedziału 1–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 InvoiceDate.

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. Do funkcji IIf zostają przekazane trzy argumenty. Pierwszym argumentem jest wyrażenie zwracające wartość True lub False. 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 „Order Confirmed”, jeśli wartość kontrolki Confirmed ma wartość 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 Kraj/region ma wartość null. W przeciwnym razie wyświetla wartość kontrolki Kraj/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 kontrolki DataWysyłki od wartości kontrolki DataDostawy jest równy null. W przeciwnym razie wyświetla interwał między wartościami dat w kontrolkach 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. Na przykład w celu określenia daty początkowej i końcowej oraz ograniczenia wyników zapytania do zamówień wysłanych między tymi datami można użyć operatora Between.

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

Operacje tekstowe

Wyrażenia w poniższej tabeli używają operatorów & i + w celu połączenia ciągów tekstowych, korzystają z wbudowanych funkcji do wykonywania działań na ciągu tekstowym lub operują na tekście w inny sposób, aby utworzyć pole obliczeniowe.

Wyrażenie

Opis

FullName: [FirstName] & " " & [LastName]

Tworzy pole o nazwie FullName wyświetlające wartości pól Imię i Nazwisko oddzielone spacją.

Address2: [City] & " " & [Region] & " " & [PostalCode]

Tworzy pole o nazwie Address2 wyświetlające wartości pól City, Region i PostalCode 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ę ExtendedPrice 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ć i 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 RequiredDate. Wyrażenie =[RequiredDate] - 2 zwraca wartość typu Data/godzina oznaczającą datę o dwa dni wcześniejszą niż wartość pola RequiredDate.

Wyrażenie

Opis

PrimeFreight: [Freight] * 1.1

Tworzy pole o nazwie PrimeFreight, a następnie wyświetla w tym polu wartość opłat frachtowych powiększoną o 10%.

OrderAmount: [Quantity] * [UnitPrice]

Tworzy pole o nazwie OrderAmount, a następnie wyświetla iloczyn wartości pól Quantity i UnitPrice.

LeadTime: [RequiredDate] - [ShippedDate]

Tworzy pole o nazwie LeadTime, a następnie wyświetla różnicę między wartościami pól RequiredDate i ShippedDate.

TotalStock: [UnitsInStock]+[UnitsOnOrder]

Tworzy pole o nazwie TotalStock, a następnie wyświetla sumę wartości pól UnitsInStock i UnitsOnOrder.

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 jest ustawiona na Procent, w wyrażeniu nie należy umieszczać elementu *100.

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, Zliczanie wierszy w arkuszu danych 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 YearHired, a następnie używa funkcji DatePart w celu wyświetlenia roku zatrudnienia każdego pracownika.

MinusThirty: Date( )- 30

Tworzy pole o nazwie MinusThirty, 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 jest ustawiona na Procent, w wyrażeniu nie należy umieszczać elementu *100.

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"

Używa operatora Or w celu wyświetlenia zamówień wysłanych do Krakowa lub Warszawy.

KrajRegionWysyłki

In("Canada", "UK")

Używa operatora In w celu wyświetlenia zamówień wysłanych do Kanady lub Wielkiej Brytanii.

KrajRegionWysyłki

Not "USA"

Używa operatora Not w celu wyświetlenia zamówień wysłanych do krajów/regionów innych niż USA.

NazwaProduktu

Not Like "C*"

Używa operatora Not i symbolu wieloznacznego * w celu wyświetlenia produktów, których nazwy nie zaczynają się od litery C.

NazwaFirmy

>="N"

Wyświetla zamówienia wysłane do firm, których nazwy zaczynają się na litery od N do Z.

KodProduktu

Right([ProductCode], 2)="99"

Używa funkcji Right w celu wyświetlenia zamówień, w których wartość pola KodProduktu kończy się na 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ł Wprowadzanie wartości daty lub 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( ))

Używa operatora Between...And oraz funkcji DateAdd i Date w celu wyświetlenia zamówień wymaganych między bieżącym dniem a datą o trzy miesiące późniejszą.

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#

Używa operatora Between...And w celu wyświetlenia zamówień wysłanych nie wcześniej niż w dniu 05.01.2017 i nie później niż w dniu 10.01.2017.

DataWymagana

Between Date( ) And DateAdd("M", 3, Date( ))

Używa operatora Between...And w celu wyświetlenia zamówień wymaganych między danym dniem i datą o trzy miesiące późniejszą.

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 znaczną elastyczność podczas dopasowywania wierszy zgodnych ze wzorcem, ponieważ definiując wzorce dla programu Access, można używać operatora Like z symbolami wieloznacznymi. Na przykład symbol wieloznaczny * (gwiazdka) zapewnia zgodność z dowolnym ciągiem znaków i ułatwia wyszukanie wszystkich nazw rozpoczynających się od danej litery. Na przykład wyrażenie Like "S*" umożliwia wyszukanie wszystkich nazw rozpoczynających 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 agregującej dziedziny (funkcji agregującej SQL). 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.

Na emeryturze

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 FirstName i LastName 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 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 chcemy, aby pewna akcja była wykonywana tylko wówczas, gdy wartość pola tekstowego Licznik wynosi 10. Stosowny warunek makra można zdefiniować, używając odpowiedniego wyrażenia w kolumnie Warunek:

[Counter]=10

Podobnie jak w przypadku właściwości RegułaPoprawności wyrażenie w kolumnie Warunek jest wyrażeniem warunkowym. Musi ono zwracać wartość True lub False. Akcja jest wykonywana tylko wówczas, gdy warunek jest spełniony.

Porada    Aby wymusić tymczasowe zignorowanie akcji w programie Access wpisz wartość False jako warunek. Tymczasowe ignorowanie akcji może być pomocne podczas prób zlokalizowania błędów w makrze.

Wyrażenie służące do wykonania akcji

Jeśli

[City]="Paris"

Paris jest wartością kontrolki City w formularzu, z poziomu którego zostało uruchomione makro.

DCount("[OrderID]", "Orders") > 35

Istnieje więcej niż 35 elementów w polu OrderID tabeli Orders.

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 ShippedDate 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 UnitsInStock w formularzu Products 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ż

Używanie Konstruktora wyrażeń

Wprowadzenie do wyrażeń

Tworzenie wyrażenia

Przewodnik po składni wyrażenia

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.

×