Chương V SỬ DỤNG ĐÓI TƯỢNG TRONG VBA 5. KHÁI NIỆM ĐỐI TƯỢNG ~ TẬP HỢP ĐỐI TƯỢNG Access 2000 hỗ trợ VBA giúp cho việc phát triển ứng dụng theo hướng đối tượng được đơn giản hơn. Trong phần sau đây sẽ giới thiệu về phát triển ứng dụng theo hướng đổi tượng trong khuôn khổ của VBA và Access 2000. Tập hợp và đối tượng (Collections và Objects) Access 2000 là môi trường phát triển ứng dụng hướng đối tượng.
Cửa số Database của ACCESS cho phép người sử dụng truy cập tới các tables, queries, forms, reports, modules và các macros. VBA cũng cho phép điều này thông qua các đối tượng như recordsets và tableDef. Để tận dụng được các thế mạnh của VBA trong Access, cần phải hiểu về đối tượng cũng như các khái niệm liên quan. Một đối tượng là một thực thể như ôtô, điện thơại, băng video.
Các đối tượng đều có thuộc tính. Ví dụ, ô tô có các thuộc tính như màu sắc, cửa, các thông số kỹ thuật của động cơ và một số thuộc tính khác. Thuộc tính có thể xác định bản chất của đối tượng tạo thành. Hành vi hướng đối tượng này cho phép xác định một thực thể riêng biệt của đối tượng dựa trên các thuộc tính của chúng.
Ví dụ một chiếc xe ôtô màu đỏ và một chiếc ôtô màu đen là hai thực thể riêng biệt của đối tượng Ôtô. Các thuộc tính của đối tượng phụ thuộc vào lớp đối tượng mà nó thuộc về. Một chiếc ôtô có một tập hợp các thuộc tính khác với một máy điện thoại. Cả hai đều có thuộc tính màu sắc, nhưng máy điện thoại có thuộc tính âm thanh.
Mặt khác, xe ôtô lại có thuộc tính động cơ với công suất khác nhu. Một vài đối tượng đóng vai trò là kho chứa các đối tượng khác (containers). Các đối tượng kho cũng có các thuộc tính. Bên cạnh các thuộc tính, đối tượng còn có các phương thức (methods).
Phương thức là các hành vi mà đối tượng có thể tạo ra. Máy điện thoại có thể kết nối, xe ôtô có thể chạy. Nhiều đối tượng có hàng loạt các phương 96 thức khác nhau. Ví dụ điện thoại có thể cho phép bạn gọi nội hạt hoặc gọi đường đài.
Access không làm việc với các đối tượng vật lý. Chúng làm việc với các cấu trúc lập trình nhu forms, tables, queries và đại diện cho các đối tượng với các hành vi và thuộc tính. Cửa số Database window hiện các lớp đối tượng dữ liệu, nhắn chuột vào nút Forms để.mở một khung nhìn về các đối tượng của form. Đối tượng Form có thể chứa các đối tượng khác gọi là các điều khiên (controls).
Tap hop (Collections) cting giống như đối tượng. Mọi tập hợp trong Access đều có thuộc tính Count, né x4c định số các thực thể (phần tử) trong collection. Collections cũng có thể có thuộc tính Öem. Ta có thể sử dụng s.
thuộc tính chỉ đọc em để trả về một form cụ thể trong tập hợp AllForm có Vì một thành viên trong tập hợp là một đối tượng cụ thể nên nó không thuéc tinh Count. Thuộc tính và phương thức (Properties và Methods) Thuộc tính và phương thức xác định hình thái, hành vi của các đối tượng. : Để truy cập đến phương thức hay thuộc tính của đối tượng ta dùng cú pháp objectproperty hoặc object. Thuat ngtt object cd thể hiểu là một đối tượng hay một tập hợp các đối tượng.BackColor xác định màu nền của một hộp văn bản (text box) trên form, AllForms.
hem(0) tham chiếu đến form đầu tiên trong tập hợp các forms. Nếu form này có tên là frmSamplel, cS thé ding AllForms. Để xem các thuộc tính của đối tượng, ta chọn đối tượng trong cửa số thiết kế rồi nhắn-chuột vào mit Properties trén Toolbar. Đối tượng DoCmđlà đối tượng có nhiều phương thức nhất của Access vì vậy nó đặc biệt hữu dụng để ta bắt đầu với các phương thức.
DoCmd có các va phương thức nhu Close, OpenForm, GoToControl, FindRecord RunCommand (đã học trong, chương trước). Nhiều phương thức của DoCmd doi hỏi có tham số để xác định cách thức hoạt động của phương l thức. Một số phương thức khác đồi hỏi các tham số tuỳ chọn (optiona t, arguments). Nếu không xác định tham số cụ thể cho một optional argumen phương thức sẽ dùng các giá trị ngầm định.
Để đóng một form trong Access ta sử dụng phương thirc close cha đối số tượng DoCmd. Phương thức này đòi hỏi 2 tham số bắt buộc và một tham 97 T-GTACCE&UD tuỳ chọn. Tham số thứ nhất xác định kiểu đối tượng cần đóng, Nếu muốn đồng một form, sử dụng acForm (acForm là một hằng chứa sẵn của Access). Tham số thứ hai là tên form.
Tham số tuỳ chọn báo cho Access có lưu những thay đổi trên form hay không (ngầm định là acSaveYes, ngược lại chọn acSaveNo).Close acForm, “formname", acSaveNo Nhiều phương thức của DøCmd được ấp dụng trực tiếp cho từng đối tượng cụ thể. Ví dụ, phương thức GoToComrrol gắn điều khiển (focus) cho mét control cụ thể trên form, ta cũng có thé ding phuong thite SetFocus để làm việc đó. Sự kiện là khái niệm vô cùng quan trọng trong lập trình VBA. Ta có thể dùng các sự kiện để làm cho ứng dụng trở nên linh hoạt.
Các đối tượng và các tập hợp có những sự kiện được dùng để đưa mã lệnh của lập trình viên vào ứng dụng. Khi làm việc với các forms, có thể ding cdc events cho những việc như : kiểm tra tính đúng đắn của dữ liệu, bật hay tắt các controls, thay đổi control đang có focus, mở form, và đóng form. Người sử dụng cần phải biết khi nào nảy sinh sự kiện cũng như trình tự nay sinh của các sự kiện. Khi mở một form, nó sẽ gây ra hàng loạt sự kiện: Open, Load, Resize và Current.
Sy kién Open nảy sinh khi form bắt đầu mở nhưng trước khi các bản ghỉ được hiện ra. Sự kiện Load phat sinh sau sự kiện Open. Sau sự kiện Load, céc ban ghỉ trên forrn sẽ hiện ra. Bắt cứ đoạn mã lệnh nào làm thay đổi kích thước hay vị trí của form như các phương thức MoveSize, Minimise, Maximise, hay Restore của đối tượng DoCmd sẽ làm nảy sinh sự kiện Resize.
Sy kign Current là sự kiện cuối cùng xảy ra sau khi một form được mở. Nó cũng nảy sinh khí người sử dụng định vị tới bản ghi mới hoặc làm tươi lại form. Cách tiếp cận các sự kiện của forms và các controls của chúng : 1. Chọn form hay control trong cửa số thiết kế (Design view).
Nhắn phím phải chuột — chon Build Event từ menu ngữ cảnh để mở hộp thoại Build Event. Chọn tiếp Code Builder để mở một thủ tục sự kiện trong VBA. Có thể lựa chọn các sự kiện cần xử lý trên trong hộp combo ở góc phải trên cửa sô code. Ví dụ về một sự kiện trên form được trình bày trên hình 5.
ri Option Compare Datebase ICick |Emer Private Sub tennv_BeforeUpdate (Cancteg ơfFocus End Sub KeyDown |KeyPress Private: Sub tennv_Click() |keyup |LostFocus jouseDown End Sub MouseMove. Ví dụ về một sự kiện trên form. CÁC ĐỐI TƯỢNG CỦA ACCESS Các đối tượng của một Ứng dụng Access Một ứng dụng MS.Access gồm các đối tượng (Objects) và các tập hợp sau : KIỆU ĐÓI TƯỢNG Ý NGHĨA APPLICATION Ứng dụng CONTROL Đối tượng điều khiển trong Form hay Report FORM Form hoặc SubFom. REPORT Báo cáo FORMS COLLECTION Tập hợp các đổi tượng Forms đang mở REPORT COLLECTION Tap hp cae Reports hiện hành CONTROLS Tập hợp các Controls trên Form hay Report GOLLECTION hiện hành MODUL Modul chuẩn hoặc một lớp chuẩn MODUL COLLECTION Tập hợp các moduls đang mở.
99 REFERENCE Tham chiều đến một thư viện đối tượng REFERENCE COLLECTION Tập hợp các tham chiều hiện đã được thiết lập DOCMD Đối tượng DoCMD SCREEN Mô tả cách sắp xếp của các đối tượng hiện có trên màn hình Ba kiểu đối tượng Table, Dynaset và Snapshot cồn có tên chung là đối tượng Recordset. Các đối tượng trên được tổ chức theo mô hình phân cấp (hình 5.2) : Application ‡ ‡ ‡ ‡ ‡ ‡ ‡ Reference Forms Module Report DoCMD Screen Control Module Control Module Hinh 5. Mô hình phân cấp các đối tượng. Đối tượng Form và quan hệ phân cấp Một đối tượng Form tham chiếu tới một biểu mẫu cụ thẻ trong ACCESS.
Quan hệ phân cấp của đối tượng Form được mô tá như hình 5. Forms HÀ Forms Controls Hình 5. Mô hình phân cấp của đối tượng Form. Một đối tượng Form là thành phần của một tập hợp các Forms.
Tập hợp này do Ms.Access tự tạo ra để quản lý tất cả các biểu mẫu. Các thành phân trong tập hợp được đánh số từ chỉ số 0 theo thứ tự được tạo. 100 Có thể tham chiếu tới một biểu mẫu cụ thể trong tập hợp các biểu mẫu (Forms Collection) bằng tên biểu mẫu hoặc bằng chỉ số của nó trong danh sách. Tuy nhiên nên dùng tên Form sẽ đảm bảo hơn, vì chỉ số có thể thay đổi.
Nếu tên Form chứa ký tự trồng (blank) thi phải đặt tên trong dấu ngoặc vuông ([ ]).2 : Forms!formname Forms!Capnhat Forms![form name] Forms![Cap nhat] Forms(“formname”) Forms(“Capnhat”) Forms(Index). Forms(0) Mỗi đối tượng Form quản lý một danh sách chứa tất cả các Controls ˆ trong form. Có thể tham chiếu đến các thành phần (controls) trong Form bằng cách tham chiếu tường minh hoặc ngầm định: Ví dụ tham chiếu tới điều khiển Hoten trong form Capnhat Forms!Capnhat.Controls!Hoten Hoặc : Forms!Capnhat!Hoten Ví dụ 5.3 : Cập nhật đến điều khiển có tên TenVattu trong một SubForm có ten SubCtietCtu thuéc Form Hoadon Forms!Hoadon.Controls!TenVattu Forms!Hoadon.Form!TenVattu Mỗi đối tượng đều có các thuộc tính và phương thức của mình. Chúng bao gồm tắt cả các thuộc tính liệt kê trong bảng thuộc tính của đối tượng.4: Sử dụng thuộc tính Count của tập hợp Forms để tính số forms hiện thời đang mở và in tên của từng Forms : Sub AllOpenFormsQ Dim X as integer, N as integer N = Forms.
Print “ Có “; N;” Form dang mo” 101 ForX =0toNÑ— 1 Debug.Name Next X End Sub 5. Báo cáo (Reports) và mới quan hệ phân cắp Tương tự Form, Report cũng là một đối tượng với quan hệ phân cấp được mô tả như hình 5. Reports Report Controls Hinh 5. Quan hệ phân cấp được mô tả của Report.
Một đối tượng Report là thành phần của một tập hợp các Reports. Tập hợp này do Ms.Access tự tạo ra để quản lý tất cả các biểu mẫu. Các thành phần trong tập hợp được đánh số từ chỉ số 0 theo thứ tự được tạo. Có thể tham chiếu tới một biểu mẫu cụ thể trong tập hợp các biểu mẫu (Reports Collection) hoặc bằng tên biểu mẫu, hoặc bằng chỉ số của nó trong danh sách.
Tuy nhiên nên dùng tên Report sé đảm bảo hơn, vì chỉ số có thể thay đổi. Nếu tên Report chứa ký tự trống (blank) thì phải đặt tên trong dấu ngoặc vuông ([ ]).5 + Reports!Reportname Reports!Danhsach Reports![Report name] Reports!