KH I NIỆM VỀ OBJECT a KHÁI NIỆM Object cịn gọi là đối tượng cơ sở dữ liệu nĩ bao gồm các thành phần tồn tại bên trong cơ sở dữ liệu như Table, Form, Query, Report, Module, các Control
Trang 1Bài 9 L M VIỆC VỚI Đ I TƯỢNG
TRONG ACCESS
9.1 OBJECT V COLLECTION
9.1.1 KH I NIỆM VỀ OBJECT
a) KHÁI NIỆM
Object cịn gọi là đối tượng cơ sở dữ liệu nĩ bao gồm các thành phần tồn tại bên trong cơ sở dữ liệu như Table, Form, Query, Report, Module, các Control trên Form hoặc Report Đối tượng trong Access cũng giống như đối tượng cĩ trong thế giới thực như con người, con vật, cái bàn, cái ghế,…Mỗi đối tượng đều cĩ đặc tính riêng và cách cư xử riêng Thí dụ con người cĩ những đặc tính như tên, tuổi, chiều
cao, cân nặng,…Với cùng đối tượng người, ta phân biệt người này với người khác
thơng qua đặc tính riêng của họ Các đối tượng trong Access cũng vậy, mỗi đối tượng
cĩ một cái tên để phân biệt với các đối tượng khác, cĩ nhiều đặc điểm riêng gọi là các thu c tính, cĩ nhiều hoạt động gọi là các phư ng thức và cĩ những phản ứng với tác động lên nĩ gọi là các sự kiện hay biến c của đối tượng đĩ
b) THU C TÍNH, BIẾN C V PHƯƠNG THỨC CỦA Đ I TƯỢNG
- Tập thu c tính (Properties): Là tập hợp các đặc điểm để hình thành ra đối
tượng Thơng thường, các đối tượng cĩ một vài thuộc tính giống nhau và cĩ một số thuộc tính riêng biệt chỉ cĩ trong một số đối tượng ví dụ: Form và TextBox đều cĩ thuộc tính Width (chiều rộng), nhưng chỉ ở Form mới cĩ thuộc tính Record Source cịn TextBox chỉ cĩ thuộc tính Control Source Khi người dùng tạo ra một đối tượng trong Access thì tập hợp các thuộc tính của đối tượng do Access đã định nghĩa sẵn Mỗi thuộc tính của đối tượng mới tạo ra Access cũng đã gán một giá trị mặc định để khởi tạo ra đối tượng đĩ Trong quá trình điều khiển đối tượng trong Access người lập trình cĩ thể tham khảo
và hoặc thay đổi giá trị tập thuộc tính của đối tượng Trong VB thuộc tính của đối tượng cĩ biểu tượng là
- Tập phư ng thức (Methods): Là tập hợp các hành động mà đối tượng đĩ cĩ
khả năng thực hiện được ví dụ đối tượng cĩ khả năng di chuyển (Move), làm tươi lại đối tượng (Requery),… Các đối tượng khác nhau sẽ cĩ các phương thức khác nhau Khi người dùng tạo ra một đối tượng tập hợp phương thức của đối tượng do Access đã định nghĩa sẵn và được người lập trình gọi phương thức của đối tượng thi hành khi cần thiết Trong VB phương thức cĩ biểu tượng
là
- Tập biến c (Events): Là tập hợp sự kiện xảy ra trên một đối tượng (chủ yếu
do người sử dụng tác động lên đối tượng) khi đối tượng đĩ đang mở ví dụ như:
Trang 2sự di chuyển chuột, Click chuột, thay đổi dữ liệu của đối tượng,…Khi tạo ra một đối tượng mặc nhiên đối tượng đó bất động trước các biến cố xảy ra trên
nó Do đó muốn đối tượng đó phản ứng lại như thế nào khi có một biến cố xảy
ra trên đối tượng thì người lập trình phải định nghĩa nó bằng các xây dựng các thủ tục xử lý sự kiện (Event Procedure) trên biến cố đó Mỗi loại đối tượng người lập trình chỉ quan tâm đến một số các biến cố mà thôi
9.1.2 KH I NIỆM VỀ COLLECTION
Collection là tập hợp bao gồm nhiều nhóm nhiều nhóm đối tượng đang mở Mỗi nhóm là tập hợp các đối tượng cùng loại Như tập hợp các biểu mẫu (Forms Collection), tập hợp các báo cáo (Reports Collection), tập hợp các Module (Modules Collection), tập hợp các Control (Controls Collection)
Hình 9.1: M hình đối tượng Cơ sở dữ liệu
a) FORMS COLLECTION
Tập hợp các Form bao gồm các Form hiện hành đang được mở trong tập tin CSDL Sử dụng tập hợp các Form ta có thể thực hiện các hành động làm thay đổi thuộc tính của Form như tiêu đề, màu sắc,… trên Form đang mở
Thí dụ Thay đổi tiêu đề của các Form đang mở bằng cách chèn thêm tên người
sử dụng hiện hành
Application
Controls Reports
Modules Screen DoCmd
Forms
Controls
Ý nghĩa Đối tượng và tập hợp Đối tượng
Trang 3Hình 9.2: oạn lệnh thay đ i tiêu đề Form
b) REPORTS COLLECTION
Tương tự như tập hợp các Form Tập hợp các Report bao gồm các Report đang được mở trong tập tin CSDL Sử dụng tập hợp các Report ta cũng có thể thay đổi thuộc tính của các Report đang mở
c) MODULES COLLECTION
Tập hợp cá Module đang mở bao gồm các Module chung và các Module của Form hoặc Report
d) CONTROLS COLLECTION
Tập hợp các Control (điều khiển) có trên Form, SubForm, Report hoặc Section đang mở
9.2 CÖ PH P CHỈ ĐỊNH ĐẾN M T OBJECT V CONTROL 9.2.1 CÖ PH P CHỈ ĐỊNH ĐẾN M T FORM
a) CÖ PH P
Forms!<Tên Form>
b) TH DỤ
Muốn chỉ định tới Form F Hoadon ta viết như sau:
Forms!F_Hoadon
9.2.2 CÖ PH P CHỈ ĐỊNH ĐẾN SUBFORM
a) CÖ PH P
Forms!<Tên Main Form>!<Tên vùng nh ng Sub Form>.Form
b) TH DỤ
Muốn chỉ định đến SubForm có tên vùng nhúng là CTHoaDon và tên MainForm là F_Hoadon, ta viết như sau:
Forms!F_Hoadon!CTHoaDon.Form
Trang 49.2.3 CÖ PH P CHỈ ĐỊNH ĐẾN M T REPORT
a) CÖ PH P
Reports!<Tên Report>
b) TH DỤ
Muốn chỉ định đến Report tên R HoaDon, ta viết như sau:
Reports!R_HoaDon
9.2.4 CÖ PH P CHỈ ĐỊNH ĐẾN M T CONTROL
a) CÖ PH P
Điều khiển nằm trên Form
Forms!<Tên Form>!<Tên điều khiển>
Điều khiển nằm trên SubForm
Forms!<Tên Form>!<Tên vùng nh ng SubForm Form!<Tên điều khiển>
Điều khiển nằm trên Report
Reports!<Tên Report>!<Tên điều khiển>
b) TH DỤ
+ Muốn chỉ định tới điều khiển là TextBox SOHD nằm trên Form tên
F_HoaDon, ta viết như sau:
Forms!F_HoaDon!SOHD
+ Muốn chỉ định tới điều khiển là TextBox MASP nằm trên Report tên
R_SanPham, ta viết như sau:
Reports!R_SanPham!MASP
+ Muốn chỉ định tới điều khiển là TextBox MAKH nằm trên SubForm có tên vùng nhúng là HoaDon và tên MainForm là F_KhachHang, ta viết như
sau:
Forms!F_Khachhang!HoaDon.Form!MAKH
Chú ý: Ta có thể sử dụng từ Me để thay thế cho đường dẫn đến form hoặc report
chứa module mà ta đang lập trình Khi đó cú pháp chỉ định đến control nằm trên form hoặc report đó sẽ là: Me.<tên control>
Ví dụ: Giả sử ta đang lập trình trên module của form F_Hoadon thì:
Me sẽ thay thế cho đường dẫn Forms!F_Hoadon
Me.SoHD thay thế cho đường dẫn Forms!F_Hoadon!SoHD
9.2.5 CÁCH THAY ĐỔI THU C TÍNH CỦA Đ I TƯỢNG
Để tham khảo hoặc thay đổi thuộc tính của đối tượng ta có thể sử dụng một trong hai cách sau:
Trang 5Cách 1: Áp dụng để thay đổi thuộc tính ngay khi khởi tạo ra đối tượng
Vào hộp thoại thuộc tính của đối tượng
Khai báo lại giá trị cho các thuộc tính của đối tượng để làm cho đối tượng phù hợp với bói cảnh chương trình
Cách 2: Thay đổi bằng lệnh Cách này được áp dụng để thay đổi thuộc tính của
đối tượng khi đối tượng đang mở
Cú pháp:
Đường dẫn đến đ i tư ng Tên thu c tính Giá trị mới
TH DỤ
Muốn làm mờ đối tượng CommandButton (nút lệnh) tên cmdLuu trên Form có tên là F ChiTietHoaDon, ta viết như sau:
Fomrs!F_ChiTietHoaDon!cmdLuu.Enabled = False
9.2.6 CÁCH GỌI PHƯƠNG THỨC CỦA M T OBJECT THI H NH
CÖ PH P
Đường dẫn đến đ i tư ng Tên phư ng thức [ Danh sách tham s
TH DỤ
Muốn tính toán lại các điều khiển tính toán trên Form F CapNhatHangHoa, ta
sử dụng phương thức Recalc như sau:
Forms!F_CapNhatHangHoa.Recalc
Để di chuyển một TextBox MANSX trong Form F DMNSX đến vị trí góc trên bên trái là 50,50 và có độ rộng 400, chiều cao 200, ta viết lệnh như sau:
Trang 6Forms!F_DMNSX!MANSX.Move 50,50,400,200
Phương thức Move có 4 tham số Move Left [,Top][,Width][,Height]
Left: khoảng cách từ bên trái cửa sổ đến đối tượng di chuyển
Top: khoảng cách từ bên trên cửa sổ đến đối tượng di chuyển
Width: chiều rộng của đối tượng di chuyển
Height: chiều cao của đối tượng di chuyển
Các số đo tính bằng đơn vị Twip (1cm = 567 Twip)
Chú ý:
Ta có thể sử dụng Me để thay thế cho đường dẫn đến form hoặc report chứa đoạn lệnh mà ta đang lập trình khi đó đường dẫn đến một control đang nằm trên form hoặc report đó sẽ là: Me.<tên control>
Ví dụ: giả sử ta đang lập trình trong module của form F_Hoadon thì:
o Me sẽ thay thế cho đường dẫn Forms!F_Hoadon
o Me.Sohd sẽ thay thế cho đường dẫn Forms!F_Hoadon!Sohd
9.2.7 MÔ TẢ V G N BIẾN Đ I TƯỢNG
a) Ý NGH A
Biến đối tượng là biến dùng để chỉ định đến một loại đối tượng như cơ sở dữ liệu, bộ mẩu tin (Recordset), Form, Control
b) CÖ PH P KHAI B O BIẾN Đ I TƯỢNG
Dim <Tên biến> As <Kiểu dữ liệu đối tượng>
Set <Tên biến> = <Tên điều khiển>
c) CÖ PH P SỬ DỤNG BIẾN Đ I TƯỢNG
Sau khi khai báo và gán giá trị khởi tạo cho biến đối tượng, ta sử dụng biến đối tượng bình thường như một đối tượng
<Tên biến>.<Thuộc tính> hoặc
<Tên biến>.<Phương thức>
d) CÖ PH P GIẢI PHÓNG BIẾN Đ I TƯỢNG
Sau khi đã làm việc xong với một biến đối tượng, ta giải phóng tài nguyên vùng
nhớ hệ thống bằng cách gán từ khóa Nothing cho biến đối tượng
Set <Tên biến> = Nothing
e) C C THU C T NH ĐẶC BIỆT CHỈ ĐỊNH ĐẾN C C Đ I TƯỢNG
Visual Basic for Applications cung cấp các thuộc tính đặc biệt dùng để chỉ định đến các đối tượng trong mô hình đối tượng của Access
Tên thuộc tính Chỉ định
ActiveControl Điều khiển đang nhận sự tập trung trên đối tượng màn hình,
Trang 7Form, Report Previous Control Điều khiển gần nhất ở trước điều khiển hiện tại
RecordsetClone Bộ mẩu tin dữ liệu nguồn bên dưới của Form
ActiveForm Form đang nhận sự tập trung
ActiveReport Report đang nhận sự tập trung
Form Form con chứa trong một Form
Report Report con chứa trong một Report
Me Đối tượng Form hoặc báo cáo nơi chứa đoạn mã lệnh hiện tại đang thực hiện Parent Đối tượng cha của đối tượng hiện tại
9.2.8 CÖ PH P LỆNH WITH
a) Ý NGH A
Khi ta không muốn lặp đi lặp lại nhiều lần tên biến đối tượng hoặc tên đối tượng trong các câu lệnh thì ta có thể dùng phát biểu With
b) CÚ PHÁP
With < ối tượng>
.<Thuộc tính>
.<Phương thức>
End With
c) THÍ DỤ : Đoạn lệnh sau đây
Me.Caption = "Quan ly khach hang"
Me.AllowAdditions = False
Me.AllowDeletions = False
Me.AllowEdits = True
Có thể viết lại theo cấu trúc With là:
With Me
.Caption = "Quan ly khach hang"
.AllowAdditions = False
.AllowDeletions = False
.AllowEdits = True
End With
9.3 M T S THU C T NH PHƯƠNG THỨC BIẾN C CỦA
M T S Đ I TƯỢNG THƯỜNG DÙNG
9.3.1 FORM
Trang 8a) THU C TÍNH
- Caption: Đặt tiêu đề cửa sổ của form
Thí dụ Đang ở cửa sổ viết Code cho Form hiện hành
Forms!F_Hoadon.Caption = “ ơn đ t hàng” „Đặt tiểu đề cho Form là
“Đơn đặt hàng”
- RecordSource: Chọn Table/Queries làm nguồn cho Form
Thí dụ Chọn nguồn dữ liệu cho Form là query Q_DONDATHANG
Me.RecordSource = “Q DONDATHANG”
- Visible: n hoặc hiện form khi mở form ra Có 2 giá trị là True hiện hoặc
False ẩn
Thí dụ Muốn ẩn Form hiện hành
Me.Visible = False „ n Form hiện hành
- AllowDeletions: Cho (True) hoặc không cho (False) xóa dữ liệu trên Form
Thí dụ
Me.AllowDeletions = False „Không cho phép xóa dữ liệu trên Form
- AllowAdditions: Cho (True) hoặc không cho (False) thêm dữ liệu trên Form
Thí dụ
Me.Additions = True „Cho phép thêm dữ liệu trên Form
- AllowEdits: Cho (True) hoặc không cho (False) sửa dữ liệu trên Form
Thí dụ
Me.AllowEdits = False „Không cho phép sửa dữ liệu trên Form
- NavigationButtons: hiện True hoặc ẩn False thanh chứa các nút di chuyển
mẩu tin của Form
Thí dụ
Me.NavigationButtons = False „ n thanh chứa các nút di chuyển mẩu tin
- BookMark: Di chuyển mẩu tin hiện hành của form đến vị trí có BookMark nào
đó (BookMark là số hiệu đánh dấu của từng mẩu tin trên bộ mẩu tin)
Thí dụ
Me.BookMark = Rs.BookMark „Di chuyển mẩu tin hiện hành của Form đến
mẩu tin mà con trỏ mẩu tin Recordset đang trỏ tới (Rs là biến có kiểu Recordset)
- CurrentRecord: Trả về một số có kiểu Long cho biết mẩu tin hiện hành của
Form được chỉ định nào đó (Form này đang hiển thị ở chế độ Form View) là mẩu tin thứ mấy Thuộc tính này read only nên chỉ cho phép người lập trình tham khảo chứ không cho phép thay đổi
Trang 9- AllowFilters: Cho phép (True) hoặc không cho phép (False) lọc các mẩu tin
trên Form Mặc nhiên là cho phép lọc
Thí dụ
Me.AllowFilters = False „Không cho phép lọc các mẩu tin trên Form
- Filter: cho phép xác định điều kiện lọc cho Form hoặc Report Điều kiện lọc là
một biểu thức đặt trong dấu nháy đôi
- FilterOn: tiến hành lọc True theo điều kiện được khai báo trong thuộc tính
Filter hoặc B lọc False
Ví dụ Trong form F_HosoNV trên đó có 2 nút lệnh cmdLoc và cmdBoloc Nếu
bấm vào nút Lọc thì xuất hiện hộp thoại yêu cầu nhập vào tên nhân viên cần lọc Sau khi nhập tên nhân viên và bấm OK thì tiến hành lọc những mẩu tin của form F_HosoNV chỉ cho hiển thị những nhân viên có tên được nhập từ bàn phím mà thôi Nếu bấm vào nút Bỏ Lọc thì hiện đầy đủ các mẩu tin như ban đầu
Hình 9.6: Form F CHITIETHOADON khi chưa lọc
Khi bấm vào nút Lọc xuất hiện hộp thông báo:
Trang 10Hình 9.7: Hộp thoại yêu cầu nhập tên nhân viên cần lọc
Sau đây là mã lệnh viết cho 2 nút trên:
Private Sub CmdBoloc_Click()
Me.FilterOn = False
End Sub
Private Sub Cmdloc_Click()
Dim dk As String
dk = InputBox("Nhap vao ten nhan vien can loc:")
Me.Filter = "ten='" & dk & "'"
Me.AllowFilters = True
Me.FilterOn = True
End Sub
b) PHƯƠNG THỨC
- Undo: dùng quay về trạng thái ban đầu cho Form khi nó đang được sửa đổi
Thí dụ
Me.Undo „Dùng phục hồi trạng thái cũ của Form hiện hành khi nó đang
hiệu chỉnh
- Requery: ta sử dụng phương thức này để cập nhật lại dữ liệu mới nhất mà
Form có được Phương thức này thực hiện một trong các việc sau:
+ Trả về query nguồn cho Form
+ Hiển thị dữ liệu mới nhất của Table nguồn khi ta Thêm, Xóa hoặc Sửa mẩu
tin trên đó
+ Cập nhật lại sự thay đổi mẩu tin khi ta ta áp dụng phương thức Lọc dữ liệu
trên Form
Thí dụ
Me.Requery „Dùng làm tươi dữ liệu lại cho Form
- Recalc: cập nhật tức thời toàn bộ các điều khiển tính toán trên Form
Trang 11Thí dụ
Me.Recalc
c) BIẾN C
- On Open (Cancel As Integer): biến cố xảy ra khi cửa sổ form được mở ra
Tham số Cancel có giá trị là True hoặc False Mặc nhiên là False Nếu là True
có tác dụng hủy bỏ biến cố
- On Load: biến cố xảy ra khi dữ liệu được nạp lên form
- On Unload (Cancel As Integer): biến cố xảy ra khi nguồn dữ liệu trên form bị
đóng lại Tham số Cancel có giá trị là True hoặc False Mặc nhiên là False Nếu
là True có tác dụng hủy bỏ biến cố
- On Close: biến cố xảy ra khi cửa sổ form bị đóng lại
Thứ tự các biến c xảy ra
Các biến cố lần luợt xảy ra khi mở form:
Các biến cố lần luợt xảy ra khi đóng form:
9.3.2 TEXTBOX
a) THU C TÍNH
- Name: dùng đặt tên cho TextBox Ta chỉ đặt tên cho TextBox khi Form ở chế
độ Design View Trong quá trình đối tượng đang mở ta không được phép sử dụng lệnh để đổi tên đối tượng
- Control Source: khai báo nguồn dữ liệu cho TextBox Nếu thay đổi bằng lệnh
thì giá trị thay đổi phải đặt trong cặp dấu nháy đôi
Thí dụ Trên Form một form ta co textbox mang tên txtthang Để gán cho
txtbox này hiển thị tháng hiện hành ta sử dụng lệnh
Me.txtthang.RecordSource=”=Month(Date())”
- Visible: Hiện (True) hoặc ẩn (False) TextBox Mặc nhiên là True
Thí dụ
Me.txtKETQUA.Visible = False „Làm ẩn TextBox txtKETQUA
- Enabled: làm mờ (False) hoặc sáng lại bình thường (True) Mặc nhiên là True
Ví dụ
Me.txtTongTriGia.Enabled = False „Làm mờ TextBox txtTongTriGia
- Locked: Cho phép (False) hoặc không cho phép (True) sửa đổi dữ liệu trên
TextBox Mặc nhiên là False
Open Load Resize Active Current
UnLoad Deactive Close