a) Các thành phần của đối tượng :
- Đối tượng con (Sub Object) - Thuộc tính (Property) - Phương thức (Method)
b) Qui tắc biểu thị thành phần của đối tượng :
Bắt đầu là đối tượng khởi thủy (là đối tượng không nằm trong bất kỳ đối tượng nào khác – đó là Forms, Reports, DBEngine), kế đó là danh sách các đối tượng có quan hệ phụ thuộc (đối tượng sau là thành phần của đối tượng trước), cuối cùng là thành phần cần biểu thị. Giữa 2 đối tượng trong danh sách được kết nối bằng :
- Dấu chấm than nếu đối tượng sau do người dùng định nghĩa
- Dấu chấm trong các trường hợp còn lại (đối tượng sau là thuộc tính, phương thức hay đối tượng do Access định nghĩa)
Để gắn (tham chiếu) một biến với một đối tượng cùng kiểu ta dùng câu lệnh : Set Tên_biến = Dạng_biểu_thị_đối_tượng
BÀI TẬP
Vd 1 :
Sub Vd1()
Dim frm as form
DoCmd.OpenForm “Khachhang” ‘ mở Form Khachhang
Set frm = Forms![Khachhang] ‘ gán Form Khachhang cho biến frm
Frm![TenKH] = “Cty ABC” ‘ trên ô điều khiển TenKH xuất hiện “Cty ABC” Frm.Visible = False ‘ làm ẩn Form Khachhang
Frm.Visible = True ‘ cho hiện Form Khachhang Frm![TenKH].Visible = False ‘ làm ẩn ô điều khiển TenKH End Sub
Vd 2 : Truy cập các đối tượng riêng biệt trong đối tượng phân cấp của Microsoft Access: Sub LockControl()
Dim Frm as Form, ctl as Control ‘ khai báo các biến đối tượng DoCmd.OpenForm “Nhanvien”
Set frm = Forms![Nhanvien]
Set ctl = frm![TenNV] ‘ gán Control TenNV cho biến ctl If ctl.ControlType = acTextBox then ‘ kiểm tra thuộc tính ControlType Ctl.Locked = True ‘ khóa Control nếu nó là TextBox End If
Set frm = Nothing End Sub
Vd 3 : Thủ tục lặp cho mỗi control của Form Khachhang, nếu Control là một Label, sẽ đổi font size thành 14-pt Sub ChangeLabels()
Dim Frm as Form, ctl as Control ‘ khai báo các biến đối tượng DoCmd.OpenForm “Khachhang”
Set frm = Forms![Khachhang]
For Each ctl In frm
If ctl.ControlType = acLabel then ctl.FontSize = 14 End If
Next ctl End Sub
Vd 4 : Truy cập các đối tượng và tập hợp trong tổ chức phân cấp đối tượng của DAO. Vd sau sẽ duyệt suốt một cấp đối tượng và in ra tên của mỗi field của table Nhanvien
Sub ListTablefields()
Dim dbs as Database, tdf as TableDef, fld as Field ‘ khai báo các biến đối tượng Set dbs = CurrentDB()
Set tdf = dbs.TableDefs![Nhanvien]
‘ In ra tất cả các tên field của table Nhanvien
For Each fld In tdf.Fields
MsgBox “Ten Field cua table Nhanvien la : “ & fld.Name
Next fld
Set dbs = Nothing End Sub
Giả sử đã khai báo: Dim dbs as database Dim tdf as Tabledef Dim fld as Field