Bạn có thể sử dụng hàm DCount để xác định số bản ghi nằm trong một tập hợp bản ghi đã xác định (số bản ghi miền ). Sử dụng hàm DCount trong mô-đun Visual Basic for Applications (VBA), macro, biểu thức truy vấn hoặc biểu thức truy điều khiển được tính toán.
Ví dụ: bạn có thể sử dụng hàm DCount trong mô-đun để trả về số lượng bản ghi trong bảng Đơn hàng tương ứng với đơn hàng được đặt vào một ngày cụ thể.
Cú pháp
DCount ( expr , domain [, criteria] )
Cú pháp hàm DCount có các đối số sau đây:
Đố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 số bản ghi. Nó có thể là một biểu thức chuỗi nhận dạng một trường trong một bảng hoặc truy vấn hoặc nó 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, nó có thể là tích hợp sẵn hoặc do người dùng xác định, nhưng không phải là một hàm tổng hợp miền khác hoặc hàm tổng hợp SQL. |
miền |
Bắt buộc. Một biểu thức chuỗi xác định tập hợp các bản ghi cấu thành miền. Đó 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 được sử 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 một biểu thức SQL, không có từ WHERE. Nếu đối số criteria bị bỏ qua, hàm DCount sẽ đánh giá expr so với toàn bộ tên miền. Bất kỳ trường nào được bao gồm trong tiêu chí cũng phải là một trường trong miền; nếu không , hàm DCount 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 biết các giá trị cụ thể của chúng. Mặc dù đối số expr có thể thực hiện tính toán trên một trường nhưng hàm DCount chỉ đơn giản là tính toán 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 được 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, hãy đặt thuộc tính rceControlSou của hộp văn bản thành biểu thức sau đây:
=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 số bản ghi trong 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 bất kỳ hạn chế nào đối với kết quả. Sử dụng hàm DCount khi bạn phải đếm các bản ghi trong một 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ố 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ố đơ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 có chứa giá trị Null trong trường được expr tham chiếu trừ khi expr là ký tự đại diện 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 các 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ó 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 chứa dữ liệu trong bất kỳ trường được liệt kê nào. Nếu bạn sử dụng toán tử cộng, hàm DCount sẽ chỉ trả về số bản ghi 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 từng toán tử khi được sử dụng với một trường chứa dữ liệu trong tất cả các bản ghi (Tên_Vận_chuyển) và một trường không chứa dữ liệu (Khu_vực_Vận_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ử được ưa dùng để 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ỳ thứ gì ngoài phép cộng số, trừ khi bạn muốn phát tán Null cụ thể thông qua một biểu thức.
Những thay đổi không được lưu đối với bản ghi trong miền 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 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 bằng phương pháp e Updat.
Ví dụ về truy vấn
Biểu thức |
Kết quả |
SELECT DCount("ProductID","ProductSales","Discount=0") AS Expr1 FROM ProductSales GROUP 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" có giá trị "Chiết khấu" là "0". |
SELECT DCount("ProductID","ProductSales","DateofSale=Date()-1") AS YesterdaySale FROM ProductSales GROUP 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 "Doanh_số_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 trả về số đơn hàng được vận chuyển đến một quốc gia/khu vực đã xác định sau một ngày vận chuyển đã xác định. Miền là 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 dùng dòng mã sau đây trong cửa sổ Tức thời:
:OrdersCount "UK", #1/1/96#