W tym artykule przedstawiono przykłady wyrażeń w programie Access. Wyrażenie łączy operatory matematyczne lub logiczne, stałe, funkcje, pola tabeli, kontrolki i właściwości w jedną wartość. Wyrażenia w programie Access umożliwiają obliczanie wartości, sprawdzanie poprawności danych i ustawianie wartości domyślnych.
W tym artykule
Formularze i raporty
Wszystkie wyrażenia używane w formularzach i raportach
Zapytania i filtry
Wszystkie wyrażenia używane w zapytaniach i filtrach
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
W tabelach w tej sekcji przedstawiono wyrażenia, które obliczają wartość w kontrolce w formularzu lub raporcie. Aby utworzyć kontrolkę obliczeniową, wprowadź wyrażenie we ControlSource właściwości kontrolki, a nie 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, używania wbudowanych funkcji do pracy z tekstem lub tworzenia kontrolki obliczeniowej w inny sposób.
| 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) |
Left Używa tej funkcji do wyświetlenia pierwszego znaku wartości w polu lub kontrolce o nazwie ProductName. |
=Right([AssetCode], 2) |
Right Używa funkcji do wyświetlania dwóch ostatnich znaków wartości w polu lub kontrolce o nazwie AssetCode. |
=Trim([Address]) |
Trim Używa funkcji do wyświetlania wartości kontrolki Address po usunięciu spacji wiodących i końcowych. |
=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode]) |
IIf Używa tej funkcji do wyświetlania wartości kontrolek i PostalCode kontrolekCity, jeśli Region kontrolka ma wartość null. W przeciwnym razie wyświetlane są wartości Citykontrolek , Regionoraz PostalCode kontrolek rozdzielonych spacjami. |
=[City] & (" " + [Region]) & " " & [PostalCode] |
+ Używa operatora i funkcji propagacji wartości null w celu wyświetlenia wartości City i PostalCode kontrolek, jeśli wartość pola Region lub kontrolki wynosi null. W przeciwnym razie wyświetlane są wartości Citypól lub PostalCode kontrolek oraz Regionpola lub kontrolki oddzielone spacjami. Propagacja wartości null oznacza, że jeśli dowolna część wyrażenia ma wartość null, całe wyrażenie ma wartość null. Operator + obsługuje propagację wartości null, ale & operator tego nie robi. |
Nagłówki i stopki
Numery stron w formularzach Page lub raportach można wyświetlać i drukować za pomocą właściwości i Pages . Te właściwości są dostępne tylko podczas drukowania lub podglądu wydruku, więc nie są wyświetlane w arkuszu właściwości formularza lub raportu. Zazwyczaj umieszcza się pole tekstowe w sekcji nagłówka lub stopki formularza lub raportu, a następnie używa się wyrażenia, takiego jak 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 |
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 jest używany operator arytmetyczny (+, -, *lub /) i jedna z kontrolek ma wartość null, wynik całego wyrażenia wynosi null. Jest to nazywane propagacja wartości null. Jeśli kontrolka może mieć wartość null, można uniknąć propagacji wartości null za pomocą funkcji Nz w celu przekonwertowania wartości null na zero. Na przykład użyj opcji =Nz([Subtotal])+Nz([Freight]).
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. |
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 procent sprzedaży przez podzielenie wartości kontrolki Sales przez sumę wszystkich wartości w kontrolce Sales . Jeśli właściwość kontrolki jest ustawiona Format na Percentwartość , 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.
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. |
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. |
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. |
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.
W poniższych sekcjach przedstawiono przykłady wyrażeń używanych w zapytaniach.
Operacje tekstowe w zapytaniach
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. |
Operacje arytmetyczne w zapytaniach
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 FreightPercentage, a następnie wyświetla procent opłat frachtowych w każdej sumze częściowej. To wyrażenie używa Sum tej funkcji do sumowania wartości w Freight polu, a następnie dzieli te sumy przez sumę wartości w Subtotal polu. Aby użyć tego wyrażenia, przekonwertuj zapytanie wybierające na zapytanie podsumowujące. Należy użyć wiersza Suma w siatce projektu i ustawić dla tego pola komórkę Suma na wartość Expression. Aby uzyskać więcej informacji na temat tworzenia zapytania podsumowującego, zobacz Sumowanie danych przy użyciu zapytania. Jeśli właściwość pola jest ustawiona Format na Percentwartość , nie dołączaj *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, Wyświetlanie sum kolumn przy użyciu wiersza sumy i Wyświetlanie sum kolumn w arkuszu danych.
Operacje daty w zapytaniach
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. |
Funkcje agregujące języka SQL w zapytaniach
Wyrażenia w poniższej tabeli używają funkcji SQL, które agregują lub podsumowują dane. Często są wyświetlane funkcje, takie jak Sum, Counti Avg są określane jako funkcje agregujące.
Oprócz funkcji agregowania program Access udostępnia również funkcje agregujące domeny, które umożliwiają selektywne sumowanie lub zliczanie 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. Funkcje agregujące domeny obejmują funkcje DSum, DCount i DAvg.
Aby obliczyć sumy, często trzeba utworzyć zapytanie podsumowujące. Aby na przykład podsumować według grupy, użyj zapytania podsumowującego. Aby włączyć zapytanie podsumowujące z siatki projektu zapytania, wybierz 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 FreightPercentage, a następnie oblicza procent opłat frachtowych w każdej sumze częściowej, dzieląc sumę wartości w Freight polu przez sumę wartości w Subtotal polu. W tym przykładzie użyto Sum tej funkcji. Tego wyrażenia należy użyć z zapytaniem podsumowującym. Jeśli właściwość pola jest ustawiona Format na Percentwartość , nie dołączaj *100. Aby uzyskać więcej informacji na temat tworzenia zapytania podsumowującego, zobacz 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. |
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. |
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. |
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. |
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. |
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). |
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. |
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. |
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. |
Zapytania aktualizujące
Użyj zapytania aktualizującego, aby zmodyfikować dane 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. W poniższej tabeli przedstawiono niektóre sposoby używania wyrażeń w zapytaniach aktualizujących. Użyj tych wyrażeń w wierszu Update To w siatce projektu zapytania dla pola, które chcesz zaktualizować.
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. |
Instrukcje SQL
Structured Query Language (SQL) to język zapytań używany w programie Access. Każde zapytanie utworzone w widoku projektu zapytania można wyrazić również za pomocą języka SQL. Aby wyświetlić instrukcję SQL dla dowolnego zapytania, wybierz pozycję Widok SQL w menu Widok . W poniższej tabeli przedstawiono przykładowe instrukcje SQL używające 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. |
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. Następnie program Access dostarcza tę wartość podczas tworzenia nowego rekordu zawierającego pole lub gdy jest tworzony obiekt zawierający kontrolkę. Wyrażenia w poniższej tabeli zawierają przykładowe wartości domyślne dla pola lub kontrolki. Jeśli kontrolka jest powiązana z polem w tabeli, a pole 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. |
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łę poprawności, zmodyfikuj ValidationRule właściwość pola lub kontrolki. Należy również rozważyć ustawienie ValidationText właściwości, która przechowuje tekst wyświetlany w programie Access, gdy reguła poprawności jest naruszona. Jeśli nie ustawisz ValidationText tej właściwości, program Access wyświetli domyślny komunikat o błędzie.
W przykładach w poniższej tabeli przedstawiono wyrażenia reguł poprawności właściwości ValidationRule i skojarzony tekst tej ValidationText właściwości.
| 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.
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 ValidationRule właściwości wyrażenie w bloku Jeżeli jest wyrażeniem warunkowym. Musi ono rozwiązać problem z albo True .False 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ę. |