Za pomocą funkcji DCount można określić liczbę rekordów znajdujących się w określonym zestawie rekordów (domenie). Funkcji DCount można używać w module języka Visual Basic for Applications (VBA), makrze, wyrażeniu zapytania lub kontrolce obliczeniowej.
Można na przykład użyć funkcji DCount w module, aby zwrócić liczbę rekordów w tabeli Zamówienia, które odpowiadają zamówień złożonych w określonym dniu.
Składnia
DCount(wyrażenie, domena* [, kryteria] )
W składni funkcji DCount występują następujące argumenty:
| Argumenty argumentów | Opis |
|---|---|
| wyrażenie | Argument wymagany. Wyrażenie identyfikujące pole, dla którego chcesz zliczyć rekordy. Może to być wyrażenie tekstowe identyfikujące pole w tabeli lub zapytaniu albo wyrażenie wykonujące obliczenia na danych w tym polu. W wyrażeniu można zawrzeć nazwę pola w tabeli, kontrolkę w formularzu, stałą lub funkcję. Jeśli wyrażenie zawiera funkcję, może to być funkcja wbudowana lub zdefiniowana przez użytkownika, ale z wyłączeniem funkcji agregującej domeny i funkcji agregującej języka SQL. |
| domena | Argument wymagany. Wyrażenie tekstowe identyfikujące zestaw rekordów stanowiący domenę. Może to być nazwa tabeli lub nazwa zapytania, o ile to zapytanie nie wymaga parametru. |
| kryteria | Argument opcjonalny. Wyrażenie tekstowe używane w celu ograniczenia zakresu danych, dla którego wykonywana jest funkcja DCount . Na przykład kryteria są często takie same, jak klauzula WHERE w wyrażeniu SQL, z pominięciem wyrazu WHERE. Jeśli kryteria zostaną pominięte, funkcja DCount oceni wyrażenie względem całej domeny. Każde pole zawarte w kryteriach musi być również polem w domenie; w przeciwnym razie funkcja DCount zwraca wartość Null. |
Spostrzeżenia
Funkcja DCount umożliwia zliczenie rekordów w domenie, gdy nie musisz znać ich konkretnych wartości. Mimo że argument wyrażenie może wykonywać obliczenia na polu, funkcja DCount po prostu zlicza liczbę rekordów. Wartość jakiegokolwiek obliczenia wykonanego przez wyrażenie jest niedostępna.
Funkcji DCount należy używać w kontrolce obliczeniowej, gdy zachodzi potrzeba określenia kryteriów w celu ograniczenia zakresu danych, na którym ta funkcja jest wykonywana. Aby na przykład wyświetlić liczbę zamówień wysyłanych do Krakowa, należy ustawić następujące wyrażenie jako właściwość ŹródłoKontrolki pola tekstowego:
=DCount("[OrderID]", "Orders", "[ShipRegion] = 'CA'")
Jeśli chcesz po prostu zliczyć wszystkie rekordy w domenie bez określania żadnych ograniczeń, użyj funkcji Count .
Porada Funkcja Count została zoptymalizowana w celu przyspieszenia zliczania rekordów w zapytaniach. W wyrażeniu zapytania należy użyć funkcji Count zamiast funkcji DCount i ustawić opcjonalne kryteria, aby wymusić wszelkie ograniczenia dotyczące wyników. Funkcji DCount należy używać, gdy trzeba zliczyć rekordy w domenie z poziomu modułu kodu lub makra albo w kontrolce obliczeniowej.
Funkcja DCount umożliwia zliczenie rekordów zawierających pole, którego nie ma w źródle rekordów, na którym oparty jest dany formularz lub raport. Można na przykład wyświetlić liczbę zamówień z tabeli Zamówienia w kontrolce obliczeniowej formularza opartego na tabeli Produkty.
Funkcja DCount nie zlicza rekordów zawierających wartości null w polu, do którego odwołuje się wyrażenie , chyba że wyrażenie jest symbolem wieloznacznym gwiazdki (*). W przypadku użycia gwiazdki funkcja DCount oblicza całkowitą liczbę rekordów, łącznie z tymi, które zawierają pola o wartości null . W poniższym przykładzie jest obliczana liczba rekordów w tabeli Zamówienia.
intX = DCount("*", "Orders")
Jeśli domena jest tabelą z kluczem podstawowym, można również zliczyć całkowitą liczbę rekordów, ustawiając wyrażenie na pole klucza podstawowego, ponieważ pole klucza podstawowego nigdy nie będzie miało wartości null .
Jeśli wyrażenie identyfikuje wiele pól, rozdziel nazwy pól operatorem łączenia — operatorem handlowego "i" (&) lub operatorem dodawania (+). Jeśli do rozdzielenia pól użyjesz znaku handlowego "i", funkcja DCount zwróci liczbę rekordów zawierających dane w dowolnym z wymienionych pól. W przypadku użycia operatora dodawania funkcja DCount zwraca tylko liczbę rekordów zawierających dane we wszystkich wymienionych polach. W poniższym przykładzie pokazano działanie każdego operatora w połączeniu z polem zawierającym dane we wszystkich rekordach (NazwaOdbiorcy) i polem, które nie zawiera żadnych danych (RegionOdbiorcy).
intW = DCount("[ShipName]", "Orders")
intX = DCount("[ShipRegion]", "Orders")
intY = DCount("[ShipName] + [ShipRegion]", "Orders")
intZ = DCount("[ShipName] & [ShipRegion]", "Orders")
Uwaga
Znak handlowego "i" jest preferowanym operatorem do łączenia ciągów. Należy unikać używania operatora dodawania do celów innych niż dodawanie wartości liczbowych, chyba że konkretne znaczenie ma propagować wartości null w wyrażeniu.
Niezapisane zmiany rekordów w domenie nie są uwzględniane w działaniu tej funkcji. Jeśli chcesz, aby funkcja DCount była oparta na zmienionych wartościach, musisz najpierw zapisać zmiany, klikając przycisk Zapisz rekord w obszarze Rekordy na karcie Dane , przenosząc fokus na inny rekord lub używając metody aktualizacji .
Przykłady kwerend
| Wyrażenie | Rezultat |
|---|---|
| SELECT DCount("ProductID","ProductSales","Discount=0") AS Wyr1 FROM ProductSales GROUP BY DCount("ProductID","ProductSales","Discount=0"); | Zwraca liczbę wartości w polu "ProductID" tabeli "ProductSales", gdzie wartość "Discount" jest równa "0". |
| SELECT DCount("ProductID","ProductSales","DateofSale=Date()-1") AS YesterdaySale FROM ProductSales GROUP BY DCount("ProductID","ProductSales","DateofSale=Date()-1"); | Zwraca liczbę wartości w polu "IdentyfikatorProduktu" tabeli "SprzedażProduktów", gdzie wartość "DataSprzedaży" jest dzień przed datą bieżącą. |
Przykład kodu VBA
Uwaga
Poniższe przykłady przedstawiają sposób użycia tej funkcji w module języka Visual Basic for Applications (VBA). Aby uzyskać dodatkowe informacje na temat pracy w języku VBA, wybierz pozycję Dokumentacja dewelopera z listy rozwijanej obok przycisku Wyszukaj i wprowadź odpowiednie terminy w polu wyszukiwania.
Poniższa funkcja zwraca liczbę zamówień wysłanych do określonego kraju/regionu po określonej dacie wysyłki. Domeną jest tabela Zamówienia.
Public Function OrdersCount _
(ByVal strCountryRegion As String, _
ByVal dteShipDate As Date) As Integer
OrdersCount = DCount("[ShippedDate]", "Orders", _
"[ShipCountryRegion] = '" & strCountryRegion & _
"' AND [ShippedDate] > #" & dteShipDate & "#")
End Function
Aby wywołać tę funkcję, użyj następującego wiersza kodu w oknie bezpośrednim:
:OrdersCount "UK", #1/1/96#