W tym artykule przedstawiono wiele przykładów wyrażeń w 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 Access umożliwiają obliczanie wartości, sprawdzanie poprawności danych i ustawianie wartości domyślnej.
W tym artykule
Wszystkie wyrażenia używane w zapytaniach i filtrach
Funkcje agregujące w języku SQL Dopasowywanie wartości tekstowych |
Znajdowanie brakujących danych Kryteria oparte na zgodności dat |
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óżniania 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łowy) 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. |
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 |
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 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 DataWymagana.
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 używany jest operator arytmetyczny (+, -, * i /) 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]).
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 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, 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 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 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. 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 „Zamówienie potwierdzono”, 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 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. 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 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
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. Wyrażenie =[RequiredDate] - 2 zwraca wartość typu Data/godzina oznaczającą datę o dwa dni wcześniejszą niż wartość pola DataWymagana.
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 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, Wyświetlanie sum kolumn przy użyciu wiersza sumy i Wyświetlanie sum kolumn w arkuszu danych.
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. |
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. |
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" |
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. |
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( )) |
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. |
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 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 możesz użyć wyrażenia Like "S*", aby wyszukać wszystkie nazwy rozpoczynają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
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. |
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. |
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. |
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.
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 ono zwracać wartość True lub 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ę. |