Hàm DCount

Áp dụng cho
Access cho Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Bạn có thể dùng hàm DCount để xác định số bản ghi nằm trong một tập hợp bản ghi (một tên miền) xác định. Sử dụng hàm DCount trong mô-đun Visual Basic for Applications (VBA), macro, biểu thức truy vấn hoặc điều khiển được tính toán.

Ví dụ: bạn có thể sử dụng hàm DCount trong một mô-đun để trả về số bản ghi trong bảng Đơn hàng tương ứng với các đơn hàng đã đặt vào một ngày cụ thể.

Cú pháp

DCount(expr, domain* [, criteria] )

Cú pháp hàm DCount có những đối số sau:

Đối số Mô tả
expr Bắt buộc. Một biểu thức xác định trường mà bạn muốn đếm bản ghi. Đây có thể là một biểu thức chuỗi xác định một trường trong một bảng hoặc truy vấn, hoặc có thể là một biểu thức thực hiện tính toán trên dữ liệu trong trường đó. Trong expr, bạn có thể đưa tên của trường vào bảng, điều khiển trên biểu mẫu, hằng số hoặc hàm. Nếu expr bao gồm một hàm, thì nó có thể là hàm dựng sẵn hoặc do người dùng xác định, nhưng không phải là hàm tổng hợp miền hoặc hàm tổng hợp SQL khác.
miền Bắt buộc. Một biểu thức chuỗi định danh tập hợp các bản ghi cấu thành miền. Đây có thể là tên bảng hoặc tên truy vấn cho truy vấn không yêu cầu tham số.
tiêu chí Không bắt buộc. Một biểu thức chuỗi dùng để hạn chế phạm vi dữ liệu mà hàm DCount được thực hiện. Ví dụ: tiêu chí thường tương đương với mệnh đề WHERE trong biểu thức SQL, mà không có từ WHERE. Nếu bỏ qua tiêu chí , hàm DCount sẽ đánh giá expr cho toàn bộ miền. Bất kỳ trường nào được đưa vào tiêu chí cũng phải là một trường trong miền; nếu không, hàm DCount sẽ trả về giá trị Null.

Chú thích

Sử dụng hàm DCount để đếm số bản ghi trong một miền khi bạn không cần phải biết các giá trị cụ thể của chúng. Mặc dù đối số expr có thể thực hiện phép tính trên một trường nhưng hàm DCount chỉ đơn giản là kiểm lại số bản ghi. Giá trị của bất kỳ phép tính nào được thực hiện bởi expr không khả dụng.

Sử dụng hàm DCount trong điều khiển tính toán khi bạn cần chỉ định các tiêu chí để hạn chế phạm vi dữ liệu mà hàm đó được thực hiện. Ví dụ: để hiển thị số đơn hàng cần vận chuyển đến California, đặt thuộc tính ControlSource của hộp văn bản thành biểu thức sau:

=DCount("[OrderID]", "Orders", "[ShipRegion] = 'CA'")

Nếu bạn chỉ muốn đếm tất cả các bản ghi trong miền mà không chỉ định bất kỳ hạn chế nào, hãy sử dụng hàm Count .

Mẹo Hàm Count đã được tối ưu hóa để tăng tốc độ đếm bản ghi trong các truy vấn. Sử dụng hàm Count trong biểu thức truy vấn thay vì hàm DCount và đặt tiêu chí tùy chọn để thực thi mọi hạn chế đối với kết quả. Dùng hàm DCount khi bạn phải đếm số bản ghi trong miền từ bên trong mô-đun mã hoặc macro hoặc trong điều khiển được tính toán.

Bạn có thể sử dụng hàm DCount để đếm số lượng bản ghi có chứa một trường cụ thể không nằm trong nguồn bản ghi mà biểu mẫu hoặc báo cáo của bạn dựa trên đó. Ví dụ: bạn có thể hiển thị số lượng đơn hàng trong bảng Đơn hàng trong điều khiển được tính toán trên biểu mẫu dựa trên bảng Sản phẩm.

Hàm DCount không đếm các bản ghi chứa giá trị Null trong trường được tham chiếu bởi expr, trừ khi expr là ký tự đại diện là dấu sao (*). Nếu bạn sử dụng dấu sao, hàm DCount sẽ tính tổng số bản ghi, bao gồm những bản ghi có chứa trường Null . Ví dụ sau đây tính toán số lượng bản ghi trong bảng Đơn hàng.

intX = DCount("*", "Orders")

Nếu miền là bảng có khóa chính, bạn cũng có thể đếm tổng số bản ghi bằng cách đặt expr cho trường khóa chính vì sẽ không bao giờ có giá trị Null trong trường khóa chính.

Nếu expr xác định nhiều trường, hãy phân tách tên trường bằng toán tử ghép nối, dấu và (&) hoặc toán tử cộng (+). Nếu bạn sử dụng dấu và để phân tách các trường, hàm DCount sẽ trả về số bản ghi có chứa dữ liệu trong mọi trường được liệt kê. Nếu bạn sử dụng toán tử cộng, hàm DCount chỉ trả về số bản ghi có chứa dữ liệu trong tất cả các trường được liệt kê. Ví dụ sau đây minh họa hiệu ứng của mỗi toán tử khi được dùng với trường có chứa dữ liệu trong tất cả các bản ghi (Tên_Vận_chuyển) và với trường không chứa dữ liệu (Vùng_lãnh_chuyển).

intW = DCount("[ShipName]", "Orders")
intX = DCount("[ShipRegion]", "Orders")
intY = DCount("[ShipName] + [ShipRegion]", "Orders")
intZ = DCount("[ShipName] & [ShipRegion]", "Orders")

Lưu ý

Dấu và là toán tử ưu tiên để thực hiện ghép chuỗi. Bạn nên tránh sử dụng toán tử cộng cho bất kỳ mục đích nào khác ngoài phép cộng dạng số, trừ khi bạn đặc biệt muốn truyền các giá trị Null thông qua một biểu thức.

Những thay đổi chưa lưu cho bản ghi trong miền sẽ không được bao gồm khi bạn sử dụng hàm này. Nếu bạn muốn hàm DCount dựa trên các giá trị thay đổi, trước tiên bạn phải lưu các thay đổi bằng cách bấm vào Lưu Bản ghi bên dưới Bản ghi trên tab Dữ liệu , di chuyển tiêu điểm đến một bản ghi khác hoặc sử dụng phương pháp Cập nhật .

Ví dụ về truy vấn

Biểu thức Kết quả
SELECT DCount("ProductID","ProductSales","Discount=0") AS Expr1 FROM ProductSales NHÓM BY DCount("ProductID","ProductSales","Discount=0"); Trả về số lượng giá trị trong trường "ID_sản_phẩm" của bảng "Doanh_số_sản_phẩm", trong đó giá trị "Chiết khấu" là "0".
SELECT DCount("ProductID","ProductSales","DateofSale=Date()-1") AS YesterdaySale FROM ProductSales NHÓM BY DCount("ProductID","ProductSales","DateofSale=Date()-1"); Trả về số lượng giá trị trong trường "ID_sản_phẩm" của bảng "Sales_Sản_phẩm", trong đó "DateofSale" là một ngày trước ngày hiện tại.

Ví dụ về VBA

Lưu ý

Các ví dụ sau thể hiện cách sử dụng hàm này trong mô-đun Visual Basic for Applications (VBA). Để biết thêm thông tin về cách làm việc với VBA, chọn Tham khảo dành cho Nhà phát triển trong danh sách thả xuống cạnh Tìm kiếm, rồi nhập một hoặc nhiều từ vào hộp tìm kiếm.

Hàm sau đây trả về số lượng đơn hàng được vận chuyển đến một quốc gia/khu vực cụ thể sau ngày vận chuyển cụ thể. Miền là một bảng Đơn hàng.

Public Function OrdersCount _
    (ByVal strCountryRegion As String, _
    ByVal dteShipDate As Date) As Integer
    OrdersCount = DCount("[ShippedDate]", "Orders", _
        "[ShipCountryRegion] = '" & strCountryRegion & _
        "' AND [ShippedDate] > #" & dteShipDate & "#")
End Function

Để gọi hàm, hãy sử dụng dòng mã sau trong cửa sổ Tức thời:

:OrdersCount "UK", #1/1/96#