Bài viết này cung cấp ví dụ về biểu thức trong Access. Biểu thức kết hợp toán học hoặc toán tử lô-gic, hằng số, hàm, trường bảng, điều khiển và thuộc tính thành một giá trị duy nhất. Bạn có thể sử dụng biểu thức trong Access để tính toán giá trị, xác thực dữ liệu và đặt giá trị mặc định.
Trong bài viết này
Biểu mẫu và báo cáo
Tất cả biểu thức biểu mẫu và biểu thức báo cáo
Truy vấn và bộ lọc
Tất cả biểu thức truy vấn và biểu thức lọc
Bảng
| Giá trị mặc định của trường | Quy tắc xác thực trường |
|---|
Macro
Biểu mẫu và bào cáo
Các bảng trong mục này hiển thị các biểu thức tính toán giá trị trong một điều khiển trên biểu mẫu hoặc báo cáo. Để tạo điều khiển được tính toán, hãy nhập một biểu thức vào ControlSource thuộc tính của điều khiển thay vì vào trường bảng hoặc truy vấn.
Lưu ý
Bạn cũng có thể sử dụng biểu thức trong một biểu mẫu hoặc báo cáo khi tô sáng dữ liệu bằng định dạng có điều kiện.
Phép toán về văn bản
Các biểu & thức trong bảng sau sử dụng toán tử (dấu và) + và (dấu cộng) để kết hợp các chuỗi văn bản, sử dụng các hàm tích hợp sẵn để làm việc với văn bản hoặc tạo điều khiển được tính toán.
| Biểu thức | Kết quả |
|---|---|
="N/A" |
Hiển thị N/A. |
=[FirstName] & " " & [LastName] |
Hiển thị các giá trị trong trường bảng có tên là Tên và Họ. Trong ví dụ này, & toán tử được sử dụng để kết hợp trường Tên, ký tự khoảng trắng (nằm trong dấu ngoặc kép) và trường LastName. |
=Left([ProductName], 1) |
Sử dụng hàm Left để hiển thị ký tự đầu tiên của giá trị trong một trường hoặc điều khiển có tên ProductNamelà . |
=Right([AssetCode], 2) |
Sử dụng hàm Right để hiển thị hai ký tự cuối của giá trị trong một trường hoặc điều khiển có tên AssetCodelà . |
=Trim([Address]) |
Sử dụng hàm Trim để hiển thị giá trị của điều khiển Address sau khi loại bỏ khoảng trắng ở đầu và cuối. |
=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode]) |
Sử dụng hàm IIf để hiển thị giá trị của các City điều PostalCode khiển và nếu điều Region khiển là null. Nếu không, nó sẽ hiển thị các giá trị của City, và Regioncác điều PostalCode khiển, được phân tách bởi dấu cách. |
=[City] & (" " + [Region]) & " " & [PostalCode] |
Sử dụng + toán tử và phát tán null CityPostalCodeRegion để hiển thị các giá trị của các điều khiển và nếu giá trị trong trường hoặc điều khiển là null. Nếu không, nó sẽ hiển thị các giá trị Citycủa , , Regionvà các trường PostalCode hoặc điều khiển, được phân tách bởi dấu cách. Phát tán null có nghĩa là nếu bất kỳ phần nào của biểu thức là null, toàn bộ biểu thức sẽ là null. Toán + tử hỗ trợ phát tán null nhưng toán & tử thì không. |
Đầu trang và chân trang
Sử dụng và Page thuộc Pages tính để hiển thị hoặc in số trang trong biểu mẫu hoặc báo cáo. Những thuộc tính này chỉ sẵn dùng trong quá trình in hoặc Xem trước khi In, vì vậy chúng không xuất hiện trên bảng thuộc tính của biểu mẫu hoặc báo cáo. Thông thường, bạn đặt một hộp văn bản vào phần đầu trang hoặc chân trang của biểu mẫu hoặc báo cáo, rồi sử dụng biểu thức tương tự như biểu thức được hiển thị trong bảng sau.
Để biết thêm thông tin về việc sử dụng đầu trang và chân trang trong biểu mẫu và báo cáo, xem bài viết Chèn số trang vào biểu mẫu hoặc báo cáo.
| Biểu thức | Kết quả |
|---|---|
=[Page] |
1 |
="Page " & [Page] |
Trang 1 |
="Page " & [Page] & " of " & [Pages] |
Trang 1 trên 3 |
=[Page] & " of " & [Pages] & " Pages" |
1 trên 3 Trang |
=[Page] & "/" & [Pages] & " Pages" |
1/3 Trang |
=[Country/region] & " - " & [Page] |
Vương quốc Anh - 1 |
=Format([Page], "000") |
001 |
="Printed on: " & Date() |
Ngày in: 31/12/2017 |
Phép toán số học
Bạn có thể sử dụng biểu thức để cộng, trừ, nhân và chia các giá trị trong hai hoặc nhiều trường hay điều khiển. Bạn cũng có thể sử dụng biểu thức để thực hiện các phương trình số học với ngày. Ví dụ: giả sử bạn có một trường bảng Ngày/Giờ có tên là Ngày_bắt_buộc. Trong trường hoặc trong điều khiển gắn với trường, =[RequiredDate] - 2 biểu thức trả về giá trị ngày/giờ bằng hai ngày trước các giá trị hiện tại trong trường Ngày_bắt_buộc.
| Biểu thức | Kết quả |
|---|---|
=[Subtotal]+[Freight] |
Tổng các giá trị trong các trường hoặc điều khiển Tổng_phụ và Cước_phí. |
=[RequiredDate]-[ShippedDate] |
Khoảng giữa các giá trị ngày trong trường hoặc điều khiển Ngày_bắt_buộc và Ngày_vận_chuyển. |
=[Price]*1.06 |
Tích của giá trị trong trường hoặc điều khiển Giá và 1,06 (thêm 6 phần trăm vào giá trị Giá). |
=[Quantity]*[Price] |
Tích của các giá trị trong trường hoặc điều khiển Số_lượng và Giá. |
=[EmployeeTotal]/[CountryRegionTotal] |
Thương của các giá trị trong trường hoặc điều khiển Tổng_nhân_viên và Tổng_quốc_gia_vùng_lãnh_thổ. |
Lưu ý
Khi bạn sử dụng toán tử số học (+, -, hoặc */) trong một biểu thức và một trong các điều khiển là null, kết quả của toàn bộ biểu thức là null. Điều này được gọi là phát tán null. Nếu điều khiển có thể có giá trị null, bạn có thể tránh phát tán null bằng cách sử dụng hàm Nz để chuyển đổi giá trị null thành không. Ví dụ: sử dụng =Nz([Subtotal])+Nz([Freight]).
Giá trị trong các điều khiển khác
Đôi khi, bạn cần một giá trị tồn tại ở nơi khác, chẳng hạn như trong một trường hoặc điều khiển trên một biểu mẫu hoặc báo cáo khác. Bạn có thể sử dụng biểu thức để trả về giá trị từ một trường hoặc điều khiển khác.
Bảng sau đây liệt kê các ví dụ biểu thức mà bạn có thể sử dụng ở các điều khiển được tính toán trên biểu mẫu.
| Biểu thức | Kết quả |
|---|---|
=Forms![Orders]![OrderID] |
Giá trị của điều khiển ID_Đơn_hàng trên biểu mẫu Đơn_hàng. |
=Forms![Orders]![Orders Subform].Form![OrderSubtotal] |
Giá trị của điều khiển Tổng_phụ_Đơn_hàng trên biểu mẫu con có tên là Biểu mẫu con Đơn hàng trên biểu mẫu Đơn_hàng. |
=Forms![Orders]![Orders Subform]![ProductID].Column(2) |
Giá trị của cột thứ ba trong ID_Sản_phẩm, một hộp danh sách có nhiều cột trên biểu mẫu con có tên là Biểu mẫu con Đơn hàng trên biểu mẫu Đơn hàng. (Lưu ý rằng 0 tham chiếu tới cột đầu tiên, 1 tham chiếu tới cột thứ hai, v.v..) |
=Forms![Orders]![Orders Subform]![Price] * 1.06 |
Tích của giá trị trên điều khiển Giá trên biểu mẫu con có tên là Biểu mẫu con Đơn hàng trên biểu mẫu Đơn hàng và 1,06 (thêm 6 phần trăm vào giá trị của điều khiển Giá). |
=Parent![OrderID] |
Giá trị của điều khiển ID_Đơn_hàng trên biểu mẫu chính hay biểu mẫu cha mẹ của biểu mẫu con hiện tại. |
Các biểu thức trong bảng sau đây thể hiện một số cách sử dụng các điều khiển được tính toán trên báo cáo. Các biểu thức tham chiếu Thuộc tính Report.
| Biểu thức | Kết quả |
|---|---|
=Report![Invoice]![OrderID] |
Giá trị của một điều khiển có tên "ID_Đơn_hàng" trong báo cáo có tên là "Hóa_đơn". |
=Report![Summary]![Summary Subreport]![SalesTotal] |
Giá trị của điều khiển Tổng_Doanh_số trên báo cáo con có tên Báo cáo con Tóm tắt trên Báo cáo Tóm tắt. |
=Parent![OrderID] |
Giá trị của điều khiển ID_đơn_hàng trên báo cáo chính hoặc báo cáo mẹ của báo cáo con hiện tại. |
Các giá trị đếm, tổng và trung bình
Bạn có thể sử dụng một loại hàm gọi là hàm tổng hợp để tính toán giá trị cho một hay nhiều trường hoặc điều khiển. Ví dụ: bạn có thể tính tổng nhóm cho chân nhóm trong báo cáo hay tổng phụ đơn hàng cho các mục dòng trên biểu mẫu. Bạn cũng có thể đếm số mục trong một hay nhiều trường hoặc tính toán giá trị trung bình.
Các biểu thức trong bảng sau thể hiện một số cách sử dụng hàm, chẳng hạn như Avg, Count và Sum.
| Biểu thức | Mô tả |
|---|---|
=Avg([Freight]) |
Sử dụng hàm Avg để hiển thị giá trị trung bình của các giá trị trong trường bảng hoặc điều khiển có tên "Cước_phí". |
=Count([OrderID]) |
Sử dụng hàm Count để hiển thị số bản ghi trong điều khiển ID_đơn_hàng. |
=Sum([Sales]) |
Sử dụng hàm Sum để hiển thị tổng các giá trị của điều khiển Doanh_số. |
=Sum([Quantity]*[Price]) |
Sử dụng hàm Sum để hiển thị tổng của tích các giá trị trong điều khiển Số_lượng và Giá. |
=[Sales]/Sum([Sales])*100 |
Hiển thị tỷ lệ phần trăm doanh số bằng cách chia giá trị của điều Sales khiển cho tổng tất cả các giá trị trong điều Sales khiển. Nếu bạn đặt thuộc Format tính của điều khiển thành Percent, đừng đưa vào *100 biểu thức. |
Để biết thêm thông tin về cách sử dụng hàm tổng hợp và cộng tổng các giá trị trong trường cũng như cột, xem các bài viết Tính tổng dữ liệu bằng cách sử dụng truy vấn, Đếm dữ liệu bằng cách sử dụng truy vấn, Hiển thị tổng theo cột trong một biểu dữ liệu bằng cách sử dụng hàng Tổng và Hiển thị tổng theo cột trong một biểu dữ liệu.
Hàm tổng hợp SQL
Bạn sử dụng loại hàm gọi là hàm tổng hợp SQL hoặc miền khi cần tính tổng hoặc đếm giá trị có chọn lọc. Một "miền" bao gồm một hay nhiều trường trong một hay nhiều bảng hoặc một hay nhiều điều khiển trên một hay nhiều biểu mẫu hoặc báo cáo. Ví dụ: bạn có thể khớp các giá trị trong một trường bảng với các giá trị trong một điều khiển trên biểu mẫu.
| Biểu thức | Mô tả |
|---|---|
=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms("Suppliers")("[SupplierID]")) |
Sử dụng hàm DLookup để trả về giá trị của trường Tên_liên_hệ trong bảng Nhà_cung_cấp, trong đó, giá trị của trường ID_nhà_cung cấp trong bảng khớp với giá trị của điều khiển ID_nhà_cung_cấp trên biểu mẫu Nhà_cung_cấp. |
=DLookup("[ContactName]", "[Suppliers]", "[SupplierID] = " & Forms![New Suppliers]![SupplierID]) |
Sử dụng hàm DLookup để trả về giá trị của trường Tên_liên_hệ trong bảng Nhà_cung_cấp, trong đó giá trị của trường ID_nhà_cung_cấp trong bảng khớp với giá trị của điều khiển ID_nhà_cung_cấp trên biểu mẫu Nhà cung cấp mới. |
=DSum("[OrderAmount]", "[Orders]", "[CustomerID] = 'RATTC'") |
Sử dụng hàm DSum để trả về tổng cộng các giá trị trong trường Số_tiền_đơn_hàng ở bảng Đơn_hàng, trong đó, ID_khách_hàng là RATTC. |
=DCount("[Retired]","[Assets]","[Retired]=Yes") |
Sử dụng hàm DCount để trả về số lượng giá trị Có trong trường Đã_ngừng_sử_dụng (trường Có/Không) trong bảng Tài_sản. |
Phép toán về ngày
Theo dõi ngày và giờ là một hoạt động cơ sở dữ liệu cơ bản. Ví dụ: bạn có thể tính toán số ngày đã trôi qua kể từ ngày lập hóa đơn để tính thời gian cho khoản phải thu của mình. Bạn có thể định dạng ngày và giờ theo nhiều cách, như được thể hiện trong bảng sau đây.
| Biểu thức | Mô tả |
|---|---|
=Date() |
Sử dụng hàm Date mm-dd-yyđể hiển thị ngày hiện tại ở dạng , mm trong đó tháng (từ 1 đến 12), dd là ngày (từ 1 đến 31) yy và là hai chữ số cuối của năm (từ 1980 đến 2099). |
=Format(Now(), "ww") |
Sử dụng hàm Format để hiển thị số tuần trong năm cho ngày hiện tại, ww trong đó đại diện cho các tuần từ 1 đến 53. |
=DatePart("yyyy", [OrderDate]) |
Sử dụng hàm DatePart để hiển thị năm có bốn chữ số cho giá trị trong điều khiển Ngày_đặt_hàng. |
=DateAdd("y", -10, [PromisedDate]) |
Sử dụng hàm DateAdd để hiển thị ngày trước giá trị của điều khiển Ngày_hẹn 10 ngày. |
=DateDiff("d", [OrderDate], [ShippedDate]) |
Sử dụng hàm DateDiff để hiển thị số ngày cách biệt giữa các giá trị của điều khiển Ngày_đặt_hàng và Ngày_vận_chuyển. |
=[InvoiceDate] + 30 |
Sử dụng các phép toán số học về ngày để tính toán ngày sau ngày trong trường hay điều khiển Ngày_xuất_hóa_đơn 30 ngày. |
Các điều kiện chỉ có hai giá trị
Các biểu thức ví dụ trong bảng sau đây sử dụng hàm IIf để trả về một trong hai giá trị khả thi. Bạn truyền ba tham đối của hàm IIf: Tham đối thứ nhất là một biểu thức phải trả về một hoặc True một giá False trị. Tham đối thứ hai là giá trị để trả về nếu biểu thức đó là đúng và tham đối thứ ba là giá trị để trả về nếu biểu thức đó là sai.
| Biểu thức | Mô tả |
|---|---|
=IIf([Confirmed] = "Yes", "Order Confirmed", "Order Not Confirmed") |
Sử dụng hàm IIf (Immediate If) để hiển thị thông báo "Đã xác nhận Đơn hàng" Yesnếu giá trị của điều khiển Đã xác nhận là ; nếu không, hàm sẽ hiển thị thông báo "Order Not Confirmed." |
=IIf(IsNull([Country/region]), " ", [Country]) |
Sử dụng hàm IIf và IsNull để hiển thị một chuỗi trống nếu giá trị của điều khiển Quốc_gia/vùng_lãnh_thổ là null; nếu không, hàm sẽ hiển thị giá trị của điều khiển Quốc_gia/vùng_lãnh_thổ. |
=IIf(IsNull([Region]), [City] & " " & [PostalCode], [City] & " " & [Region] & " " & [PostalCode]) |
Sử dụng hàm IIf và IsNull để hiển thị các giá trị của các điều khiển Thành_phố và Mã_bưu_điện nếu giá trị trong điều khiển Khu_vực là null; nếu không, hàm sẽ hiển thị các giá trị của các trường hoặc điều khiển Thành_phố, Khu_vực và Mã_bưu_điện. |
=IIf(IsNull([RequiredDate]) Or IsNull([ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate]) |
Sử dụng hàm IIf và IsNull để hiển thị thông báo "Kiểm tra ngày thiếu" nếu kết quả của Ngày_vận_chuyển trừ Ngày_bắt_buộc là null; nếu không, hàm sẽ hiển thị khoảng giữa các giá trị ngày của điều khiển Ngày_bắt_buộc và Ngày_vận_chuyển. |
Truy vấn và bộ lọc
Mục này bao gồm các ví dụ về biểu thức mà bạn có thể sử dụng để tạo một trường được tính toán trong truy vấn hoặc để cung cấp các tiêu chí cho truy vấn. Trường được tính toán là một cột trong một truy vấn có kết quả từ một biểu thức. Ví dụ: bạn có thể tính toán một giá trị, kết hợp các giá trị văn bản như là họ và tên hoặc định dạng một phần của một ngày nào đó.
Bạn sử dụng tiêu chí trong truy vấn để giới hạn các bản ghi mà mình làm việc cùng. Ví dụ: bạn có Between thể sử dụng toán tử để cung cấp ngày bắt đầu và kết thúc, đồng thời giới hạn kết quả của truy vấn đối với các đơn hàng đã được vận chuyển giữa các ngày đó.
Các phần sau đây cung cấp ví dụ về biểu thức để sử dụng trong truy vấn.
Các thao tác văn bản trong truy vấn
Các biểu &+ thức trong bảng sau sử dụng các toán tử và để kết hợp các chuỗi văn bản, sử dụng các hàm tích hợp sẵn để thao tác trên một chuỗi văn bản hoặc nếu không thì thao tác trên văn bản để tạo trường được tính toán.
| Biểu thức | Mô tả |
|---|---|
FullName: [FirstName] & " " & [LastName] |
Tạo một trường có tên là Họ_Tên hiển thị các giá trị trong các trường Tên và Họ, được phân tách bởi dấu cách. |
Address2: [City] & " " & [Region] & " " & [PostalCode] |
Tạo trường có tên là Địa_chỉ_2 hiển thị các giá trị trong trường Thành_phố, Khu_vực và Mã_bưu_điện, được phân tách bằng dấu cách. |
ProductInitial: Left([ProductName], 1) |
Tạo một trường có tên là Chữ_viết_tắt_sản_phẩm, rồi sử dụng hàm Left để hiển thị, trong trường Chữ_viết_tắt_sản_phẩm, ký tự đầu tiên của giá trị nằm ở trường Tên_sản_phẩm. |
TypeCode: Right([AssetCode], 2) |
Tạo một trường có tên là Mã_loại, rồi sử dụng hàm Right để hiển thị hai ký tự cuối của các giá trị trong trường Mã_tài_sản. |
AreaCode: Mid([Phone],2,3) |
Tạo một trường có tên là Mã_khu_vực, rồi sử dụng hàm Mid để hiển thị ba ký tự bắt đầu từ ký tự thứ hai của giá trị trong trường Điện_thoại. |
ExtendedPrice: CCur([Order Details].[Unit Price]*[Quantity]*(1-[Discount])/100)*100 |
Đặt tên trường được tính toán là Giá_mở_rộng và sử dụng hàm CCur để tính toán tổng các mục theo dòng có áp dụng giảm giá. |
Phép toán số học trong truy vấn
Bạn có thể sử dụng biểu thức để cộng, trừ, nhân và chia các giá trị trong hai hoặc nhiều trường hay điều khiển. Bạn cũng có thể thực hiện các phương trình số học với ngày. Ví dụ: giả sử bạn có trường Ngày/Giờ có tên là Ngày_bắt_buộc. Biểu thức =[RequiredDate] - 2 trả về giá trị Ngày/Giờ bằng hai ngày trước giá trị trong trường Ngày_bắt_buộc.
| Biểu thức | Mô tả |
|---|---|
PrimeFreight: [Freight] * 1.1 |
Tạo một trường có tên là Cước_phí_Chính, rồi hiển thị cước phí cộng thêm 10 phần trăm trong trường đó. |
OrderAmount: [Quantity] * [UnitPrice] |
Tạo một trường có tên là Số_tiền_Đơn_hàng, rồi hiển thị tích của các giá trị trong các trường Số_lượng và Đơn_giá. |
LeadTime: [RequiredDate] - [ShippedDate] |
Tạo một trường có tên là Thời_gian_Thực_hiện, rồi hiển thị chênh lệch giữa các giá trị trong các trường Ngày_Bắt_buộc và Ngày_Vận_chuyển. |
TotalStock: [UnitsInStock]+[UnitsOnOrder] |
Tạo một trường có tên là Tổng_Kho, rồi hiển thị tổng các giá trị trong các trường Hàng_Trong_Kho và Hàng_Trên_Đơn_hàng. |
FreightPercentage: Sum([Freight])/Sum([Subtotal]) *100 |
Tạo một trường có tên là FreightPercentage, rồi hiển thị tỷ lệ phần trăm cước phí trong mỗi tổng phụ. Biểu thức này sử Sum dụng hàm để tính Freight tổng các giá trị trong trường, rồi chia các tổng này cho tổng các giá trị trong Subtotal trường. Để sử dụng biểu thức này, hãy chuyển đổi truy vấn chọn của bạn thành truy vấn Tổng. Bạn cần sử dụng hàng Tổng trong lưới thiết kế và đặt ô Tổng cho trường này thành Expression. Để biết thêm thông tin về cách tạo truy vấn Tổng, hãy xem mục Tính tổng dữ liệu bằng cách sử dụng truy vấn. Nếu bạn đặt thuộc Format tính của trường thành Percent, thì không bao gồm *100. |
Để biết thêm thông tin về cách sử dụng hàm tổng hợp và cộng tổng các giá trị trong trường cũng như cột, xem các bài viết Tính tổng dữ liệu bằng cách sử dụng truy vấn, Đếm dữ liệu bằng cách sử dụng truy vấn, Hiển thị tổng theo cột trong một biểu dữ liệu bằng cách sử dụng hàng Tổng và Hiển thị tổng theo cột trong một biểu dữ liệu.
Thao tác ngày trong truy vấn
Gần như mọi cơ sở dữ liệu đều lưu trữ và theo dõi ngày giờ. Bạn làm việc với ngày và giờ trong Access bằng cách đặt trường ngày và giờ trong bảng của bạn thành loại dữ liệu Ngày/Giờ. Access có thể thực hiện tính toán số học với ngày; ví dụ: bạn có thể tính toán số ngày đã trôi qua kể từ ngày lập hóa đơn để tính thời gian cho khoản phải thu của mình.
| Biểu thức | Mô tả |
|---|---|
LagTime: DateDiff("d", [OrderDate], [ShippedDate]) |
Tạo một trường có tên là Thời_gian_trễ, rồi sử dụng hàm DateDiff để hiển thị số ngày từ ngày đặt hàng đến ngày vận chuyển. |
YearHired: DatePart("yyyy",[HireDate]) |
Tạo trường có tên là Năm_thuê, rồi sử dụng hàm DatePart để hiển thị năm mà mỗi nhân viên được thuê. |
MinusThirty: Date( )- 30 |
Tạo trường có tên là Trừ_ba_mươi, rồi sử dụng hàm Date để hiển thị ngày trước ngày hiện tại 30 ngày. |
Các hàm tổng hợp SQL trong truy vấn
Các biểu thức trong bảng sau sử dụng các hàm SQL tổng hợp hoặc tóm tắt dữ liệu. Bạn thường thấy các hàm như Sum, , Countvà được gọi Avg là hàm tổng hợp.
Ngoài các hàm tổng hợp, Access còn cung cấp các hàm tổng hợp miền cho phép bạn tính tổng hoặc đếm giá trị có chọn lựa. Ví dụ: bạn chỉ có thể đếm các giá trị trong một phạm vi nhất định hoặc tra cứu giá trị từ một bảng khác. Hàm tổng hợp miền bao gồm DSum, DCount và DAvg.
Để tính tổng, bạn thường cần tạo một truy vấn Tổng cộng. Ví dụ: để tóm tắt theo nhóm, hãy sử dụng truy vấn Tổng cộng. Để bật truy vấn Tổng cộng từ lưới thiết kế truy vấn, hãy chọn Tổng cộng trên menu Dạng xem.
| Biểu thức | Mô tả |
|---|---|
RowCount: Count(*) |
Tạo trường có tên là Đếm_hàng, rồi sử dụng hàm Count để đếm số lượng bản ghi trong truy vấn, bao gồm các bản ghi có trường null (trống). |
FreightPercentage: Sum([Freight])/Sum([Subtotal]) *100 |
Tạo một trường có tên FreightPercentagelà , FreightSubtotal rồi tính toán tỷ lệ phần trăm cước phí trong mỗi tổng phụ bằng cách chia tổng các giá trị trong trường cho tổng các giá trị trong trường đó. Ví dụ này sử dụng Sum hàm. Bạn phải sử dụng biểu thức này với một truy vấn Tổng cộng. Nếu bạn đặt thuộc Format tính của trường thành Percent, thì không bao gồm *100. Để biết thêm thông tin về cách tạo truy vấn Tổng, hãy xem mục Tính tổng dữ liệu bằng cách sử dụng truy vấn. |
AverageFreight: DAvg("[Freight]", "[Orders]") |
Tạo một trường có tên là Cước_phí_trung_bình, rồi sử dụng hàm DAvg để tính toán cước phí trung bình trên mọi đơn hàng được kết hợp trong một truy vấn Tổng cộng. |
Trường thiếu dữ liệu
Biểu thức được hiển thị ở đây hoạt động với các trường có khả năng bị thiếu thông tin, như là những trường chứa các giá trị null (không rõ hoặc không xác định). Bạn thường gặp phải các giá trị null, như là một mức giá không xác định cho một sản phẩm mới hoặc một giá trị mà đồng nghiệp đã quên thêm vào đơn hàng. Khả năng tìm và xử lý các giá trị null có thể là một phần quan trọng trong các thao tác cơ sở dữ liệu và các biểu thức ở bảng sau đây thể hiện một số cách thức phổ biến để xử lý các giá trị null.
| Biểu thức | Mô tả |
|---|---|
CurrentCountryRegion: IIf(IsNull([CountryRegion]), " ", [CountryRegion]) |
Tạo một trường có tên là Quốc_gia_vùng_lãnh_thổ_hiện_tại, rồi sử dụng hàm IIf và IsNull để hiển thị một chuỗi trống trong trường đó khi trường Quốc_gia_vùng_lãnh_thổ có giá trị null; nếu không thì hàm hiển thị nội dung của trường Quốc_gia_vùng_lãnh_thổ. |
LeadTime: IIf(IsNull([RequiredDate] - [ShippedDate]), "Check for a missing date", [RequiredDate] - [ShippedDate]) |
Tạo một trường có tên là Thời_gian_thực_hiện, rồi sử dụng hàm IIf và IsNull để hiển thị thông báo "Kiểm tra ngày thiếu" nếu giá trị trong trường Ngày_bắt_buộc hoặc trường Ngày_vận_chuyển là null; nếu không thì hàm sẽ hiển thị chênh lệch ngày. |
SixMonthSales: Nz([Qtr1Sales]) + Nz([Qtr2Sales]) |
Tạo một trường có tên là Doanh_số_trong_sáu_tháng, rồi hiển thị tổng cộng của các giá trị trong các trường Doanh_số_Q1 và Doanh_số_Q2 bằng cách sử dụng hàm Nz trước để chuyển đổi mọi giá trị null thành số không. |
Trường được tính toán có truy vấn con
Bạn có thể sử dụng truy vấn lồng, còn được gọi là truy vấn con, để tạo trường được tính toán. Biểu thức trong bảng sau đây là một ví dụ về trường được tính toán có kết quả từ truy vấn con.
| Biểu thức | Mô tả |
|---|---|
Cat: (SELECT [CategoryName] FROM [Categories] WHERE [Products].[CategoryID]=[Categories].[CategoryID]) |
Tạo một trường có tên là Danh_mục, rồi hiển thị Tên_danh_mục, nếu ID_danh_mục từ bảng Các_danh_mục giống với ID_danh_mục từ bảng Sản_phẩm. |
Khớp giá trị văn bản
Các biểu thức mẫu trong bảng này thể hiện tiêu chí khớp với toàn bộ hoặc một phần giá trị văn bản.
| Trường | Biểu thức | Mô tả |
|---|---|---|
| Thành_phố_vận_chuyển | "London" |
Hiển thị các đơn hàng được vận chuyển tới London. |
| Thành_phố_Vận_chuyển | "London" Or "Hedge End" |
Sử dụng toán Or tử để hiển thị các đơn hàng được vận chuyển đến London hoặc Hedge End. |
| Quốc_gia_vùng_lãnh_thổ_nơi_vận_chuyển | In("Canada", "UK") |
Sử dụng toán In tử để hiển thị các đơn hàng được vận chuyển tới Canada hoặc Vương quốc Anh. |
| Quốc_gia_vùng_lãnh_thổ_nơi_vận_chuyển | Not "USA" |
Sử dụng nhà cung Not cấp để hiển thị các đơn hàng được vận chuyển tới các quốc gia/khu vực khác ngoài Hoa Kỳ. |
| Tên_sản_phẩm | Not Like "C*" |
Sử dụng toán Not tử và ký tự * đại diện để hiển thị các sản phẩm có tên không bắt đầu bằng C. |
| Tên_công_ty | >="N" |
Hiển thị các đơn hàng được vận chuyển tới công ty có tên bắt đầu bằng các chữ N cái thông qua Z. |
| Mã_sản_phẩm | Right([ProductCode], 2)="99" |
Sử dụng hàm Right để hiển thị các đơn hàng có giá trị Mã_sản_phẩm kết thúc bằng 99. |
| Tên_khách_nhận_hàng_vận_chuyển | Like "S*" |
Hiển thị các đơn hàng được vận chuyển tới khách hàng có tên bắt đầu bằng chữ cái S. |
Khớp tiêu chí ngày
Các biểu thức trong bảng sau thể hiện cách sử dụng ngày và các hàm liên quan trong biểu thức tiêu chí. Để biết thêm thông tin về cách nhập và sử dụng giá trị ngày, xem bài viết Định dạng trường ngày và giờ.
| Trường | Biểu thức | Mô tả |
|---|---|---|
| Ngày_vận_chuyển | #2/2/2017# |
Hiển thị đơn hàng được vận chuyển vào 02/02/2017. |
| Ngày_vận_chuyển | Date() |
Hiển thị các đơn hàng được vận chuyển hôm nay. |
| Ngày_bắt_buộc | Between Date( ) And DateAdd("m", 3, Date( )) |
Sử dụng Between...And toán tử và các hàm DateAdd và Date để hiển thị các đơn hàng bắt buộc từ ngày hôm nay đến ba tháng kể từ ngày hôm nay. |
| Ngày_đặt_hàng | < Date( ) - 30 |
Sử dụng hàm Date để hiển thị các đơn hàng đã đặt hơn 30 ngày. |
| Ngày_đặt_hàng | Year([OrderDate])=2017 |
Sử dụng hàm Year để hiển thị các đơn hàng có ngày đặt hàng trong năm 2017. |
| Ngày_đặt_hàng | DatePart("q", [OrderDate])=4 |
Sử dụng hàm DatePart để hiển thị các đơn hàng trong quý bốn theo lịch. |
| Ngày_đặt_hàng | DateSerial(Year ([OrderDate]), Month([OrderDate])+1, 1)-1 |
Sử dụng các hàm DateSerial, Year và Month để hiển thị các đơn hàng trong ngày cuối cùng của mỗi tháng. |
| Ngày_đặt_hàng | Year([OrderDate])= Year(Now()) And Month([OrderDate])= Month(Now()) |
Sử dụng các hàm Year và Month, cùng toán tử And để hiển thị các đơn hàng trong năm và tháng hiện tại. |
| Ngày_vận_chuyển | Between #1/5/2017# And #1/10/2017# |
Sử dụng toán Between...Andtử để hiển thị các đơn hàng được vận chuyển không sớm hơn 05/01/2017 và không muộn hơn 10/01/2017. |
| Ngày_bắt_buộc | Between Date( ) And DateAdd("M", 3, Date( )) |
Sử dụng toán Between...And tử để hiển thị các đơn hàng bắt buộc từ ngày hôm nay đến ba tháng kể từ ngày hôm nay. |
| Ngày_sinh | Month([BirthDate])=Month(Date()) |
Sử dụng các hàm Month và Date để hiển thị nhân viên có ngày sinh trong tháng này. |
Tìm dữ liệu thiếu
Các biểu thức trong bảng sau đây hoạt động cùng với các trường có thông tin có thể bị thiếu — chúng có thể có giá trị null hoặc chuỗi độ dài bằng 0. Giá trị null thể hiện thiếu thông tin; giá trị null không thể hiện giá trị bằng không hoặc bất cứ giá trị nào khác. Access hỗ trợ ý tưởng về việc thiếu thông tin này vì khái niệm này rất quan trọng đối với tính toàn vẹn của cơ sở dữ liệu. Trên thực tế, thông tin thường bị thiếu, cho dù chỉ là tạm thời (ví dụ: giá vẫn chưa được xác định cho sản phẩm mới). Do đó, một cơ sở dữ liệu mô phỏng thực thể trong thế giới thực, như doanh nghiệp, phải có khả năng ghi thông tin dưới dạng bị thiếu. Bạn có thể sử dụng hàm IsNull để xác định xem liệu trường hoặc điều khiển có giá trị null hay không và bạn có thể sử dụng hàm Nz để chuyển đổi một giá trị null thành không.
| Trường | Biểu thức | Mô tả |
|---|---|---|
| Khu_vực_vận_chuyển | Is Null |
Hiển thị các đơn hàng cho khách hàng có trường Khu_vực_vận_chuyển là null (thiếu). |
| Khu_vực_vận_chuyển | Is Not Null |
Hiển thị các đơn hàng cho khách hàng có trường Khu_vực_vận_chuyển có chứa giá trị. |
| Fax | "" |
Hiển thị các đơn hàng cho khách hàng không có máy fax, được thể hiện bằng giá trị chuỗi độ dài bằng 0 trong trường Fax thay vì một giá trị null (thiếu). |
Khớp các mẫu hình bản ghi bằng Like
Toán Like tử Like cung cấp mức độ linh hoạt cao khi bạn đang tìm cách khớp các hàng theo mẫu vì bạn có thể sử dụng với ký tự đại diện và xác định mẫu để Access khớp. Ví dụ: * ký tự đại diện (dấu sao) khớp với một chuỗi ký tự thuộc bất kỳ kiểu nào và giúp dễ dàng tìm thấy tất cả các tên bắt đầu bằng một chữ cái. Ví dụ: bạn sử dụng biểu thức Like "S*" để tìm tất cả các tên bắt đầu bằng chữ S. Để biết thêm thông tin, hãy xem bài viết Toán tử Like.
| Trường | Biểu thức | Mô tả |
|---|---|---|
| Tên_khách_nhận_hàng_vận_chuyển | Like "S*" |
Tìm tất cả các bản ghi trong trường Tên_khách_nhận_hàng_vận_chuyển bắt đầu bằng chữ S. |
| Tên_khách_nhận_hàng_vận_chuyển | Like "*Imports" |
Tìm tất cả các bản ghi trong trường Tên_khách_nhận_hàng_vận_chuyển kết thúc bằng từ "Nhập". |
| Tên_khách_nhận_hàng_vận_chuyển | Like "[A-D]*" |
Tìm toàn bộ bản ghi trong trường Tên_khách_nhận_hàng_vận_chuyển bắt đầu bằng chữ A, B, C hoặc D. |
| Tên_khách_nhận_hàng_vận_chuyển | Like "*ar*" |
Tìm toàn bộ bản ghi trong trường Tên_khách_nhận_hàng_vận_chuyển có trình tự chữ cái "ar". |
| Tên_khách_nhận_hàng_vận_chuyển | Like "Maison Dewe?" |
Tìm tất cả các bản ghi trong trường Tên_Vận_chuyển bao gồm "Maison" ở phần đầu của giá trị và chuỗi năm chữ cái trong đó bốn chữ cái đầu là "Dewe" và chữ cái cuối cùng không xác định. |
| Tên_khách_nhận_hàng_vận_chuyển | Not Like "A*" |
Tìm toàn bộ bản ghi trong trường Tên_khách_nhận_hàng_vận_chuyển không bắt đầu bằng chữ A. |
Khớp hàng bằng hàm tổng hợp SQL
Bạn sử dụng hàm tổng hợp SQL hoặc miền khi cần tính tổng, đếm hoặc tính giá trị có chọn lọc. Ví dụ: bạn có thể chỉ muốn đếm những giá trị nằm trong một phạm vi nhất định hoặc được xác định là Có. Đôi khi, bạn có thể cần tìm kiếm giá trị từ một bảng khác để bạn có thể hiển thị giá trị đó. Biểu thức mẫu trong bảng sau đây sử dụng các hàm tổng hợp miền để thực hiện một phép tính trên một tập hợp các giá trị và sử dụng kết quả làm tiêu chí truy vấn.
| Trường | Biểu thức | Mô tả |
|---|---|---|
| Cước_phí | > (DStDev("[Freight]", "Orders") + DAvg("[Freight]", "Orders")) |
Sử dụng hàm DStDev và DAvg để hiển thị toàn bộ đơn hàng có cước phí cao hơn mức trung bình cộng với độ lệch chuẩn của cước phí. |
| Số_lượng | > DAvg("[Quantity]", "[Order Details]") |
Sử dụng hàm DAvg để hiển thị các sản phẩm được đặt hàng với số lượng lớn hơn số lượng đơn hàng trung bình. |
Khớp trường bằng truy vấn con
Bạn sử dụng một truy vấn con, còn gọi là truy vấn lồng, nhằm tính toán giá trị để sử dụng làm tiêu chí. Biểu thức mẫu trong bảng sau đây khớp với các hàng dựa trên kết quả do một truy vấn con trả về.
| Trường | Biểu thức | Hiển thị |
|---|---|---|
| Đơn_giá | (SELECT [UnitPrice] FROM [Products] WHERE [ProductName] = "Aniseed Syrup") |
Các sản phẩm có giá giống với giá của Siro hạt hồi. |
| Đơn_Giá | >(SELECT AVG([UnitPrice]) FROM [Products]) |
Các sản phẩm có đơn giá trên trung bình. |
| Tiền_lương | > ALL (SELECT [Salary] FROM [Employees] WHERE ([Title] LIKE "*Manager*") OR ([Title] LIKE "*Vice President*")) |
Tiền lương của mỗi đại diện bán hàng có mức lương cao hơn tiền lương của tất cả nhân viên có chức danh "Quản lý" hay "Phó Chủ tịch". |
| Tổng_Đơn_hàng: [Đơn_Giá] * [Số_lượng] | > (SELECT AVG([UnitPrice] * [Quantity]) FROM [Order Details]) |
Các đơn hàng có tổng cộng cao hơn giá trị đơn hàng trung bình. |
Truy vấn cập nhật
Sử dụng truy vấn cập nhật để sửa đổi dữ liệu trong một hoặc nhiều trường hiện có trong cơ sở dữ liệu. Ví dụ: bạn có thể thay thế giá trị hoặc xóa hoàn toàn giá trị. Bảng này trình bày một số cách sử dụng biểu thức trong truy vấn cập nhật. Sử dụng các biểu thức này trong Update To hàng trong lưới thiết kế truy vấn cho trường mà bạn muốn cập nhật.
Để biết thêm thông tin về việc tạo truy vấn cập nhật, xem bài viết Tạo và chạy truy vấn cập nhật.
| Trường | Biểu thức | Kết quả |
|---|---|---|
| Tiêu đề | "Salesperson" |
Thay đổi giá trị văn bản thành Nhân viên bán hàng. |
| Bắt_đầu_dự_án | #8/10/17# |
Thay đổi giá trị ngày thành 10/08/2017. |
| Đã_ngừng_sử_dụng | Yes |
Thay đổi một giá trị Không trong trường Có/Không thành Có. |
| Số_Bộ_phận | "PN" & [PartNumber] |
Thêm SBP vào đầu mỗi số bộ phận được chỉ định. |
| Tổng_Mục_Dòng | [UnitPrice] * [Quantity] |
Tính tích của Đơn_Giá và Số_lượng. |
| Cước_phí | [Freight] * 1.5 |
Tăng cước phí thêm 50 phần trăm. |
| Doanh_số | DSum("[Quantity] * [UnitPrice]", "Order Details", "[ProductID]=" & [ProductID]) |
Nếu giá trị ID_sản_phẩm trong bảng hiện tại khớp với giá trị của ID_sản_phẩm trong bảng Chi tiết đơn hàng, cập nhật tổng doanh thu dựa trên tích của Số_lượng và Đơn_giá. |
| Mã_bưu_điện_nơi_vận_chuyển | Right([ShipPostalCode], 5) |
Cắt bớt các ký tự ngoài cùng bên trái, để lại năm ký tự ngoài cùng bên phải. |
| Đơn_giá | Nz([UnitPrice]) |
Thay đổi một giá trị null (không rõ hoặc không xác định) thành số không (0) trong trường Đơn_giá. |
Câu lệnh SQL
Ngôn ngữ truy vấn có cấu trúc (SQL) là ngôn ngữ truy vấn mà Access sử dụng. Mọi truy vấn bạn tạo trong dạng xem Thiết kế Truy vấn cũng có thể được thể hiện bằng cách sử dụng SQL. Để xem câu lệnh SQL cho bất kỳ truy vấn nào, hãy chọn Dạng xem SQL trên menu Dạng xem. Bảng sau đây hiển thị các câu lệnh SQL mẫu sử dụng biểu thức.
| Câu lệnh SQL sử dụng biểu thức | Kết quả |
|---|---|
SELECT [FirstName],[LastName] FROM [Employees] WHERE [LastName]="Danseglio"; |
Hiển thị các giá trị trong các trường Tên và Họ cho những nhân viên có họ là Danseglio. |
SELECT [ProductID],[ProductName] FROM [Products] WHERE [CategoryID]=Forms![New Products]![CategoryID]; |
Hiển thị các giá trị trong các trường ID_Sản_phẩm và Tên_Sản_phẩm trong bảng Sản_phẩm cho các bản ghi, trong đó giá trị ID_Danh_mục khớp với giá trị ID_Danh_mục được chỉ định trong biểu mẫu Sản_phẩm_Mới đang mở. |
SELECT Avg([ExtendedPrice]) AS [Average Extended Price] FROM [Order Details Extended] WHERE [ExtendedPrice]>1000; |
Tính giá mở rộng trung bình cho các đơn hàng có giá trị trong trường Giá_Mở_rộng là hơn 1000 và hiển thị giá trị đó trong một trường có tên là Giá Mở rộng Trung bình. |
SELECT [CategoryID], Count([ProductID]) AS [CountOfProductID] FROM [Products] GROUP BY [CategoryID] HAVING Count([ProductID])>10; |
Trong một trường có tên ID_số_lượng_sản_phẩm, hiển thị tổng số lượng sản phẩm cho các danh mục có trên 10 sản phẩm. |
Biểu thức bảng
Hai cách sử dụng biểu thức trong bảng phổ biến nhất là gán một giá trị mặc định và tạo một quy tắc xác thực.
Giá trị mặc định của trường
Khi thiết kế cơ sở dữ liệu, bạn có thể muốn gán một giá trị mặc định cho trường hoặc điều khiển. Access sau đó sẽ cung cấp giá trị đó khi một bản ghi mới có chứa trường được tạo hoặc khi một đối tượng chứa điều khiển được tạo ra. Các biểu thức trong bảng sau đây hiển thị các giá trị mặc định mẫu cho một trường hoặc điều khiển. Nếu điều khiển được liên kết với một trường trong bảng và trường đó có giá trị mặc định thì giá trị mặc định của điều khiển sẽ được ưu tiên.
| Trường | Biểu thức | Giá trị trường mặc định |
|---|---|---|
| Số_lượng | 1 |
1 |
| Khu vực | "MT" |
MT |
| Khu_vực | "New York, N.Y." |
New York, N.Y. (Lưu ý rằng bạn phải đặt giá trị trong dấu ngoặc kép nếu giá trị đó có chứa dấu chấm câu.) |
| Fax | "" |
Một chuỗi độ dài bằng 0 để biểu thị rằng, theo mặc định, trường này nên được để trống thay vì chứa một giá trị null |
| Ngày đặt hàng | Date( ) |
Ngày hôm nay |
| Ngày_Đến_hạn | Date() + 60 |
Ngày sau 60 ngày kể từ ngày hôm nay |
Quy tắc xác thực trường
Bạn có thể tạo quy tắc xác thực cho trường hoặc điều khiển bằng cách sử dụng biểu thức. Sau đó, Access sẽ thực thi quy tắc khi nhập dữ liệu vào trường hoặc điều khiển. Để tạo quy tắc xác thực, hãy sửa đổi thuộc ValidationRule tính của trường hoặc điều khiển. Bạn cũng nên cân nhắc việc đặt ValidationText thuộc tính chứa văn bản mà Access hiển thị khi quy tắc xác thực bị vi phạm. Nếu bạn không đặt thuộc tính ValidationText , Access sẽ hiển thị thông báo lỗi mặc định.
Các ví dụ trong bảng sau đây hiển thị biểu thức quy tắc xác thực cho thuộc ValidationRule tính và văn bản được liên kết cho thuộc ValidationText tính.
| Thuộc tính ValidationRule | Thuộc tính ValidationText |
|---|---|
<> 0 |
Vui lòng nhập một giá trị khác không. |
0 Or > 100 |
Giá trị phải bằng 0 hoặc lớn hơn 100. |
Like "K???" |
Giá trị phải có bốn ký tự, bắt đầu bằng chữ K. |
< #1/1/2017# |
Nhập một ngày trước ngày 01/01/2017. |
>= #1/1/2017# And < #1/1/2008# |
Ngày phải trong năm 2017. |
Để biết thêm thông tin về việc xác thực dữ liệu, xem bài viết Tạo quy tắc xác thực để xác thực dữ liệu trong một trường.
Biểu thức macro
Trong vài trường hợp, có thể bạn muốn thực hiện một hành động hoặc một chuỗi các hành động trong macro chỉ khi nào điều kiện đặc biệt là đúng. Ví dụ: giả sử bạn muốn một hành động chỉ chạy khi giá trị của hộp văn bản Bộ_đếm là 10. Bạn sử dụng biểu thức để xác định điều kiện trong khối If:
[Counter]=10
Cũng như với thuộc ValidationRule tính, biểu thức trong khối If là một biểu thức có điều kiện. Nó phải giải quyết cho một hoặc TrueFalse. Hành động diễn ra chỉ khi điều kiện là đúng.
| Sử dụng biểu thức này để thực hiện hành động | If |
|---|---|
[City]="Paris" |
Paris là giá trị Thành_phố trong trường nằm trên biểu mẫu đã chạy macro. |
DCount("[OrderID]", "Orders") > 35 |
Có hơn 35 mục nhập trong trường ID_đơn_hàng của bảng Đơn_hàng. |
DCount("*", "[Order Details]", "[OrderID]=" & Forms![Orders]![OrderID]) > 3 |
Có hơn ba mục nhập trong bảng Chi tiết đơn hàng mà trường ID_đơn_hàng của bảng khớp với trường ID_đơn_hàng trên biểu mẫu Đơn_hàng. |
[ShippedDate] Between #2-Feb-2017# And #2-Mar-2017# |
Giá trị của trường Ngày_vận_chuyển trên biểu mẫu chạy macro không sớm hơn 02/02/2017 và không muộn hơn 02/03/2017. |
Forms![Products]![UnitsInStock] < 5 |
Giá trị của trường Hàng_trong_kho trên biểu mẫu Sản_phẩm nhỏ hơn 5. |
IsNull([FirstName]) |
Giá trị Tên trên biểu mẫu chạy macro là null (không có giá trị). Biểu thức này là tương đương với [Tên] Is Null. |
[CountryRegion]="UK" And Forms![SalesTotals]![TotalOrds] > 100 |
Giá trị trong trường Quốc_gia_vùng_lãnh_thổ trên biểu mẫu chạy macro là Vương quốc Anh và giá trị trường Tổng_đơn_hàng trên biểu mẫu Tổng_doanh_số lớn hơn 100. |
[CountryRegion] In ("France", "Italy", "Spain") And Len([PostalCode])<>5 |
Giá trị trong trường Quốc_gia_vùng_lãnh_thổ trên biểu mẫu chạy macro là Pháp, Italy hoặc Tây Ban Nha và mã bưu điện có độ dài khác 5 ký tự. |
MsgBox("Confirm changes?",1)=1 |
Bạn bấm vào OK trong hộp thoại hiển thị hàm MsgBox. Nếu bạn bấm vào Hủy bỏ trong hộp thoại này thì Access sẽ bỏ qua hành động. |