Funkcja DCount służy do określania liczby rekordów znajdujących się w określonym zestawie rekordów (domeny). Funkcji DCount należy używać w module 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 odpowiadających zamówieniu złożonemu w określonym dniu.
Składnia
DCount(wyr., domena* [, kryteria] )
W składni funkcji BD.Ile.Rekordów występują następujące argumenty:
| Argument | Opis |
|---|---|
| wyrażenie | Argument wymagany. Wyrażenie identyfikujące pole, dla którego mają zostać zliczone rekordy. Może to być wyrażenie ciągu identyfikujące pole w tabeli lub zapytaniu albo wyrażenie wykonujące obliczenia na danych w tym polu. W wyr. można dołączyć nazwę pola w tabeli, kontrolkę w formularzu, stałą lub funkcję. Jeśli wyrażenie zawiera funkcję, może być wbudowana lub zdefiniowana przez użytkownika, ale nie może być inną funkcją agregacji domeny lub funkcji agregacji 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 ciągu służące do ograniczania zakresu danych, dla którego wykonywana jest funkcja DCount . Na przykład kryteria są często równoważne klauzuli WHERE w wyrażeniu SQL bez wyrazu WHERE. Jeśli argument kryteria zostanie pominięty, funkcja DCountoceni 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 służy do zliczania rekordów w domenie, gdy nie trzeba znać ich konkretnych wartości. Mimo że argument wyrów może wykonywać obliczenia na polu, funkcja DCount po prostu tallies liczbę rekordów. Wartość dowolnego obliczenia wykonywanego przez wyrażenie jest niedostępna.
Funkcja BD.Ile.Rekordów w kontrolce obliczeniowej służy do określania kryteriów ograniczających zakres danych, dla którego ta funkcja jest wykonywana. Aby na przykład wyświetlić liczbę zamówień wysłanych do Kalifornii, ustaw właściwość ŹródłoKontrolki pola tekstowego na następujące wyrażenie:
=DCount("[OrderID]", "Orders", "[ShipRegion] = 'CA'")
Jeśli chcesz po prostu zliczyć wszystkie rekordy w domenie bez określania żadnych ograniczeń, użyj funkcji Count .
Wskazówka Funkcja Licznik została zoptymalizowana pod kątem szybkiego zliczania rekordów w zapytaniach. Użyj funkcji Zlicz w wyrażeniu zapytania zamiast funkcji DCount i ustaw kryteria opcjonalne, aby wymusić ograniczenia dotyczące wyników. Funkcja DCount służy do zliczania rekordów w domenie z poziomu modułu kodu lub makra albo w kontrolce obliczeniowej.
Za pomocą funkcji DCount można zliczyć rekordy zawierające określone pole, które nie znajduje się w źródle rekordów, na którym jest oparty formularz lub raport. Na przykład można wyświetlić liczbę zamówień w tabeli Zamówienia w kontrolce obliczeniowej na formularzu opartym 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 rekordami zawierającymi pola Null . W poniższym przykładzie można obliczyć liczbę rekordów w tabeli Zamówienia.
intX = DCount("*", "Orders")
Jeśli domena jest tabelą z kluczem podstawowym, możesz również zliczyć całkowitą liczbę rekordów , ustawiając wyrażenie jako pole klucza podstawowego, ponieważ w polu klucza podstawowego nigdy nie będzie wartości Null .
Jeśli wyrażenie identyfikuje wiele pól, oddziel nazwy pól operatorem łączenia, operatorem handlowe "i" (&) lub operatorem dodawania (+). Jeśli pola zostaną rozdzielone za pomocą ciągu "i", funkcja DCount zwróci liczbę rekordów zawierających dane w dowolnym z wymienionych pól. Jeśli używasz operatora dodawania, funkcja DCount zwraca tylko liczbę rekordów zawierających dane we wszystkich wymienionych polach. W poniższym przykładzie przedstawiono efekty użycia każdego operatora z polem zawierającym dane we wszystkich rekordach (NazwaOdbiorcy) i polem, które nie zawiera żadnych danych (ShipRegion).
intW = DCount("[ShipName]", "Orders")
intX = DCount("[ShipRegion]", "Orders")
intY = DCount("[ShipName] + [ShipRegion]", "Orders")
intZ = DCount("[ShipName] & [ShipRegion]", "Orders")
Uwaga
Ampersand jest preferowanym operatorem do łączenia ciągów. Należy unikać używania operatora dodawania dla innych elementów niż dodawanie liczb, chyba że chcesz propagować wartości Null w wyrażeniu.
Niezapisane zmiany rekordów w domenie nie są uwzględniane podczas korzystania z tej funkcji. Jeśli chcesz, aby funkcja DCount była oparta na zmienionych wartościach, należy najpierw zapisać zmiany, klikając pozycję Zapisz rekord w obszarze Rekordy na karcie Dane , przenosząc fokus do innego rekordu lub używając metody Aktualizacji .
Przykłady zapytań
| Wyrażenie | Rezultat |
|---|---|
| SELECT DCount("ProductID","ProductSales","Discount=0") AS Expr1 FROM ProductSales GROUP BY DCount("ProductID","ProductSales","Discount=0"); | Zwraca liczbę wartości w polu "ProductID" tabeli "ProductSales", gdzie wartość "Rabat" wynosi "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 "IDProduktu" tabeli "SprzedażProduktu", gdzie "DateofSale" przypada dzień przed datą bieżącą. |
Przykład języka 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. Domena to 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ć funkcję, w oknie bezpośrednim użyj następującego wiersza kodu:
:OrdersCount "UK", #1/1/96#