http://www.echip.com.vn/echiproot/weblh/...vnva2k.htm
Định dạng có điều kiện
Đây là một trong những tính năng mà người lập trình Access khao khát nhất: làm thế nào để chỉ một số dòng nào đó (ví dụ: các dòng với doanh số lớn hơn 10.000 USD) của mẫu hoặc báo biểu hiện lên với dạng thức theo ý muốn (ví dụ: có màu đậm hơn các dòng khác, để dễ đọc, dễ nhấn mạnh). Với report thì có thủ thuật thêm cấu trúc IF - Endif vào thủ tục xử lý sự kiện Format của vùng (section) chứa hộp văn bản cần kiểm tra và nhấn mạnh. (Nếu thỏa điều kiện nào đó thì sửa các đặc tính Font, Fontweight,... của điều khiển cần định dạng riêng.) Tương tự, đối với mẫu biểu kiểu Single (đơn bản ghi) đưa nhóm lệnh kể trên vào thủ tục xử lý Current. Thế nhưng với kiểu mẫu biểu liên kế (Continuous Form, mẫu biểu đa bản ghi), làm như vậy sẽ thay đổi dạng thức cho tất cả các bản ghi! Nghĩa là không đạt được mục đích đặt ra. Vâng, bây giờ thì nhóm Access của Microsoft đã lắng nghe nguyện vọng của người sử dụng: có cách dễ dàng định dạng có điều kiện (conditional formatting) cho từng hộp văn bản, từng hộp chọn combo, từng dòng một. Có thể xác lập nhiều điều kiện định dạng cho mỗi điều khiển (dưới dạng biểu thức luận lý hay trạng thái điều khiển đang trong focus hay không). Nếu có vài điều kiện đúng, sẽ chọn điều kiện đúng đầu tiên kể từ đầu danh sách. Bạn đặt điều kiện trong cả chế độ Design (khi thiết kế) hoặc chế độ Form (khi mở mẫu biểu để làm việc, tức là định dạng động, trong thời gian vào hoặc xem số liệu). Hình 1 cho thấy hộp thoại Conditional Formatting mở ra khi người dùng nhập liệu hoặc xem form bằng cách vào thực đơn Format, sau đó chọn Conditional Formatting.
Hình 1. Hộp thoại định dạng có điều kiện mở trong Form View.
Người lập trình VBA có thể kiểm soát việc định dạng có điều kiện bằng cách thêm hoặc loại bỏ các đối tượng kiểu FormatCondition từ sưu tập (collection) FormatConditions, và đặt lại các đặc tính của các đối tượng đó. Ví dụ, để doanh số hàng tháng trở nên đậm và có màu xanh dương nếu lớn hơn hạn mức nào đó (nhập sẵn vào hộp văn bản textMonthQuota của mẫu biểu), ta dùng đoạn mã sau:
With Forms!frmSales!txtMonthSales. FormatConditions
.Add(acFieldValue, acGreaterthan, "=[txtMonthQuota]")
.FontBold = True
.ForeColor = vbBlue
End With