Giáo Trình Access: Sử Dụng Đối Tượng Trong VBA

Giáo trình nghiên cứu access và ứng dụng chương 5, trình bày lý thuyết rõ ràng, minh họa ví dụ thực tế, phù hợp sinh viên ., phục vụ nghiên cứu và ứng dụng thực tiễn

Trường đại học

Trường Đại Học

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Hướng Dẫn

2000

57
0
0

Phí lưu trữ

30 Point

Tóm tắt

I. Hướng Dẫn Toàn Diện Về Đối Tượng Trong VBA Access 2000

Microsoft Access 2000, với sự hỗ trợ của Visual Basic for Applications (VBA), mở ra một môi trường phát triển ứng dụng mạnh mẽ theo mô hình lập trình hướng đối tượng. Việc hiểu và sử dụng thành thạo các đối tượng là chìa khóa để khai thác tối đa tiềm năng của Access. Một đối tượng trong VBA không phải là một thực thể vật lý, mà là các cấu trúc lập trình đại diện cho các thành phần của cơ sở dữ liệu như tables, queries, forms, và reports. Mỗi đối tượng sở hữu những đặc điểm và hành vi riêng, được định nghĩa thông qua thuộc tính và phương thức. Ví dụ, một đối tượng Form có thuộc tính Caption để đặt tiêu đề và phương thức Requery để làm mới dữ liệu. Việc nắm vững mô hình đối tượng Access phân cấp là điều kiện tiên quyết. Mô hình này bắt đầu từ đối tượng gốc là Application, chứa các tập hợp đối tượng con như Forms, Reports, và Modules. Hiểu được cấu trúc này cho phép lập trình viên truy cập và điều khiển chính xác bất kỳ thành phần nào trong ứng dụng. Tài liệu gốc nhấn mạnh: "Để 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". Lập trình VBA trong Access không chỉ là viết mã lệnh tuần tự, mà là việc tương tác với một hệ sinh thái các đối tượng, xử lý các sự kiện trong Access để tạo ra các ứng dụng linh hoạt và đáp ứng nhanh chóng với thao tác của người dùng. Việc sử dụng biến đối tượng để tham chiếu đến các đối tượng cụ thể giúp mã nguồn trở nên rõ ràng và hiệu quả hơn, đồng thời giảm thiểu sai sót trong quá trình phát triển. Đây là nền tảng cơ bản nhưng vô cùng quan trọng cho bất kỳ ai muốn đi sâu vào việc phát triển ứng dụng chuyên nghiệp bằng VBA Access.

1.1. Khái niệm cốt lõi Đối tượng thuộc tính và phương thức

Trong lập trình hướng đối tượng với VBA Access, một đối tượng là một thực thể lập trình đại diện cho một thành phần của cơ sở dữ liệu. Ví dụ, mỗi biểu mẫu là một đối tượng Form, mỗi báo cáo là một đối tượng Report. Mỗi đối tượng được xác định bởi hai yếu tố chính: thuộc tính và phương thức. Thuộc tính và phương thức định hình bản chất và hành vi của đối tượng. Thuộc tính là các đặc điểm hoặc dữ liệu mô tả đối tượng, chẳng hạn như Name, Caption, hoặc Visible. Phương thức là các hành động mà đối tượng có thể thực hiện, ví dụ như OpenForm, Close, hoặc SetFocus. Để truy cập một thuộc tính hoặc gọi một phương thức, cú pháp chung được sử dụng là object.property hoặc object.method. Ví dụ, Forms!frmKhachHang.Caption = "Danh sách Khách hàng" sẽ thay đổi tiêu đề của form frmKhachHang.

1.2. Tìm hiểu mô hình đối tượng Access phân cấp chuyên sâu

Mô hình đối tượng Access được tổ chức theo cấu trúc phân cấp, bắt đầu từ đối tượng Application ở cấp cao nhất. Đối tượng này đại diện cho chính ứng dụng Microsoft Access. Bên dưới Application là các tập hợp (collections) chứa các đối tượng cụ thể, ví dụ như tập hợp Forms chứa tất cả các form đang mở, tập hợp Reports chứa các report đang mở. Mỗi đối tượng trong một tập hợp lại có thể chứa các đối tượng con khác. Chẳng hạn, một đối tượng Form chứa một tập hợp Controls, bao gồm các đối tượng điều khiển như TextBox, ComboBox, và CommandButton. Việc hiểu rõ hệ thống phân cấp này là cực kỳ quan trọng để tham chiếu chính xác đến đối tượng mong muốn. Ví dụ, để truy cập giá trị của một TextBox tên là txtTen trên form frmNhanVien, cú pháp sẽ là Forms!frmNhanVien!txtTen.Value.

1.3. Tập hợp đối tượng Collections và vai trò của chúng

Một tập hợp (Collection) trong VBA Access là một đối tượng đặc biệt có chức năng chứa và quản lý một nhóm các đối tượng liên quan. Ví dụ, Forms là một tập hợp chứa tất cả các đối tượng Form đang mở. Mọi tập hợp đều có một thuộc tính quan trọng là Count, dùng để xác định số lượng phần tử (đối tượng) có trong tập hợp đó. Lập trình viên có thể duyệt qua tất cả các phần tử trong một tập hợp bằng vòng lặp For Each...Next hoặc truy cập một phần tử cụ thể thông qua chỉ số (bắt đầu từ 0) hoặc tên của nó. Ví dụ, Forms(0) tham chiếu đến form đầu tiên được mở, trong khi Forms("frmKhachHang") tham chiếu đến form có tên là frmKhachHang. Sử dụng tên để tham chiếu thường an toàn hơn vì chỉ số có thể thay đổi tùy theo thứ tự mở các form.

II. Thách Thức Khi Thao Tác Với Đối Tượng Dữ Liệu Access

Việc thao tác với dữ liệu là một trong những nhiệm vụ cốt lõi khi lập trình VBA trong Access, nhưng cũng là nơi phát sinh nhiều thách thức nhất. Hai công nghệ truy cập dữ liệu chính trong Access 2000 là DAO (Data Access Objects)ADO (ActiveX Data Objects). Việc lựa chọn giữa DAO và ADO phụ thuộc vào yêu cầu cụ thể của ứng dụng. DAO, được thiết kế riêng cho Jet Database Engine, rất mạnh mẽ, dễ sử dụng và hiệu quả cho các ứng dụng nội bộ của Access. Ngược lại, ADO là một công nghệ tổng quát hơn, cho phép kết nối đến nhiều nguồn dữ liệu khác nhau, không chỉ riêng Access. Một trong những khó khăn lớn nhất là quản lý đối tượng Recordset, vốn là trái tim của việc xử lý dữ liệu. Lập trình viên phải hiểu rõ cách tạo, mở, duyệt qua các bản ghi, và quan trọng là phải đóng và giải phóng đối tượng khi không còn sử dụng để tránh rò rỉ bộ nhớ. Việc khai báo và gán giá trị cho biến đối tượng cũng đòi hỏi sự chính xác, đặc biệt là việc sử dụng từ khóa Set. Tài liệu gốc chỉ rõ: "Để gán tham chiếu đối tượng cho một biến ta phải dùng lệnh SET". Bỏ qua lệnh Set khi làm việc với biến đối tượng là một lỗi phổ biến gây ra lỗi runtime. Thêm vào đó, việc xử lý các sự kiện trong Access liên quan đến dữ liệu, như BeforeUpdate hay AfterUpdate trên form, đòi hỏi sự hiểu biết sâu sắc về vòng đời của sự kiện để đảm bảo tính toàn vẹn dữ liệu. Việc không nắm rõ trình tự các sự kiện có thể dẫn đến logic ứng dụng sai lệch và khó gỡ lỗi VBA.

2.1. Phân biệt DAO Data Access Objects và ADO ActiveX Data Objects

DAO (Data Access Objects) là công nghệ truy cập dữ liệu gốc của Microsoft dành riêng cho Jet Database Engine, công cụ cốt lõi của Access. DAO rất hiệu quả và dễ sử dụng trong môi trường Access, cung cấp một mô hình đối tượng phong phú để thao tác với tables, queries, và recordsets. Trong khi đó, ADO (ActiveX Data Objects) là một công nghệ hiện đại và linh hoạt hơn, được thiết kế để trở thành một giao diện chung cho việc truy cập nhiều loại nguồn dữ liệu khác nhau, từ cơ sở dữ liệu quan hệ như SQL Server, Oracle cho đến các nguồn dữ liệu phi quan hệ. Trong Access 2000, cả hai công nghệ đều được hỗ trợ. Việc lựa chọn phụ thuộc vào mục tiêu: sử dụng DAO nếu ứng dụng chỉ làm việc với cơ sở dữ liệu Access để đạt hiệu năng tối ưu; sử dụng ADO nếu cần kết nối đến các hệ quản trị cơ sở dữ liệu khác hoặc phát triển ứng dụng có khả năng mở rộng cao.

2.2. Lỗi thường gặp khi khai báo và sử dụng biến đối tượng

Một lỗi phổ biến trong lập trình VBA là quên sử dụng từ khóa Set khi gán một đối tượng cho một biến đối tượng. Không giống như các biến thông thường, biến đối tượng không lưu trữ giá trị mà lưu trữ một tham chiếu (con trỏ) đến đối tượng trong bộ nhớ. Lệnh Set được yêu cầu để thực hiện việc gán tham chiếu này. Ví dụ, Dim rs As DAO.Recordset chỉ khai báo biến, câu lệnh đúng để gán đối tượng là Set rs = CurrentDb.OpenRecordset("TableName"). Một lỗi khác là không giải phóng bộ nhớ sau khi sử dụng. Khi một biến đối tượng không còn cần thiết, nên gán nó bằng Nothing (ví dụ: Set rs = Nothing) để giải phóng tài nguyên hệ thống, đặc biệt quan trọng khi làm việc với các đối tượng lớn như đối tượng Recordset.

2.3. Quản lý sự kiện trong Access để tối ưu hóa ứng dụng

Các sự kiện trong Access là cơ chế cho phép mã VBA phản ứng lại các hành động của người dùng hoặc các thay đổi trạng thái của ứng dụng. Việc quản lý sự kiện hiệu quả giúp ứng dụng trở nên linh hoạt và thông minh. Ví dụ, sự kiện BeforeUpdate của một control trong Access (như TextBox) cho phép kiểm tra tính hợp lệ của dữ liệu trước khi lưu vào bảng. Một thách thức là hiểu rõ thứ tự xảy ra của các sự kiện. Khi mở một form, một chuỗi các sự kiện như Open, Load, Resize, Activate, và Current sẽ lần lượt được kích hoạt. Đặt mã lệnh vào sai sự kiện có thể dẫn đến kết quả không mong muốn. Ví dụ, việc truy cập dữ liệu của form trong sự kiện Open có thể gây lỗi vì lúc này các bản ghi chưa được nạp. Mã lệnh đó nên được đặt trong sự kiện Load hoặc Current.

III. Phương Pháp Làm Chủ Các Đối Tượng Giao Diện Trong VBA

Giao diện người dùng là bộ mặt của bất kỳ ứng dụng Access nào, và việc làm chủ các đối tượng giao diện như đối tượng Formđối tượng Report là kỹ năng thiết yếu. Form không chỉ là nơi hiển thị dữ liệu mà còn là trung tâm tương tác, chứa các control trong Access như TextBox, ComboBox, và CommandButton. Lập trình VBA cho phép tùy chỉnh sâu các đối tượng này, vượt xa những gì có thể làm được trong chế độ thiết kế. Lập trình viên có thể tự động thay đổi thuộc tính của các control, ví dụ như bật/tắt một nút lệnh dựa trên giá trị của một trường dữ liệu khác. Việc tham chiếu đến các control trên form hoặc subform đòi hỏi sự chính xác. Tài liệu gốc đưa ra ví dụ tham chiếu tường minh: Forms!Hoadon.Controls!TenVattu. Nắm vững cú pháp này giúp truy cập bất kỳ control nào một cách tin cậy. Tương tự, đối tượng Report cũng có thể được điều khiển bằng VBA để tạo ra các báo cáo động, tùy chỉnh định dạng hoặc thậm chí thay đổi nguồn dữ liệu của báo cáo tại thời điểm chạy. Việc sử dụng các sự kiện của Form và Report, như On Load, On Click, hay On Format, cho phép chèn logic nghiệp vụ vào đúng thời điểm, tạo ra trải nghiệm người dùng mượt mà và chuyên nghiệp. Ví dụ, sự kiện On Click của một CommandButton có thể được lập trình để mở một form khác, chạy một truy vấn cập nhật, hoặc in một báo cáo. Việc kết hợp kiến thức về mô hình đối tượng Access với việc xử lý sự kiện là phương pháp hiệu quả nhất để xây dựng các ứng dụng Access mạnh mẽ và thân thiện với người dùng.

3.1. Thao tác chuyên nghiệp với đối tượng Form và Subform

Một đối tượng Form là một thành phần của tập hợp Forms. Để tham chiếu đến một form đang mở, có thể dùng cú pháp Forms!TenForm hoặc Forms("TenForm"). Việc thao tác không chỉ dừng lại ở bản thân form mà còn mở rộng đến các subform. Để truy cập một control trên subform, cần tham chiếu qua control chứa subform trên form chính. Ví dụ: Forms!FormChinh!SubFormControl.Form!TenControl. Kỹ thuật này rất quan trọng khi xây dựng các giao diện nhập liệu phức tạp dạng một-nhiều. Bằng VBA, lập trình viên có thể đồng bộ hóa dữ liệu giữa form chính và subform, lọc dữ liệu trên subform dựa trên lựa chọn ở form chính, hoặc thực hiện các phép tính phức tạp liên quan đến cả hai.

3.2. Kỹ thuật truy cập và tùy chỉnh control trong Access

Mỗi control trong Access là một đối tượng với tập hợp thuộc tính và phương thức riêng. VBA cho phép truy cập và thay đổi các thuộc tính này một cách linh hoạt. Ví dụ, có thể thay đổi thuộc tính Enabled để vô hiệu hóa một TextBox, hoặc thay đổi thuộc tính RowSource của một ComboBox để cập nhật danh sách lựa chọn. Tập hợp Controls của một form hoặc report cho phép duyệt qua tất cả các control. Kỹ thuật này hữu ích khi cần áp dụng một định dạng hoặc quy tắc cho hàng loạt control cùng lúc, giúp tiết kiệm thời gian và làm cho mã nguồn gọn gàng hơn. Ví dụ, một vòng lặp có thể duyệt qua tất cả TextBox trên form và đặt thuộc tính BackColor của chúng thành màu vàng nếu chúng trống.

3.3. Tự động hóa báo cáo với đối tượng Report trong VBA

Tương tự như Form, đối tượng Report cũng là một thành phần của tập hợp Reports và chứa một tập hợp Controls. VBA mở ra khả năng tự động hóa và tùy chỉnh báo cáo ở mức độ cao. Có thể sử dụng phương thức DoCmd.OpenReport với các tham số để lọc dữ liệu trước khi báo cáo hiển thị. Bên trong báo cáo, các sự kiện như OnFormat của một section (ví dụ: Detail section) cho phép thay đổi định dạng của các control dựa trên giá trị của dữ liệu. Ví dụ, có thể in các giá trị âm bằng màu đỏ. Sử dụng VBA, một CommandButton trên form có thể được lập trình để tạo và xuất nhiều báo cáo khác nhau ra file PDF, mỗi báo cáo tương ứng với một bộ dữ liệu khác nhau, hoàn toàn tự động.

IV. Hướng Dẫn Chi Tiết Sử Dụng Đối Tượng ADO Trong VBA Access

Trong Access 2000, ADO (ActiveX Data Objects) nổi lên như một công nghệ truy cập dữ liệu hiện đại và linh hoạt. Khác với DAO vốn gắn chặt với Jet Engine, ADO cung cấp một mô hình đối tượng thống nhất để làm việc với nhiều nguồn dữ liệu. Để sử dụng ADO, trước tiên cần phải tham chiếu thư viện VBA tương ứng, thường là "Microsoft ActiveX Data Objects x.x Library". Mô hình đối tượng ADO đơn giản hơn DAO, tập trung vào một vài đối tượng cốt lõi. Đối tượng Connection chịu trách nhiệm thiết lập và quản lý kết nối đến cơ sở dữ liệu. Chuỗi kết nối (connection string) là một tham số quan trọng, xác định nhà cung cấp (provider) và nguồn dữ liệu (data source). Đối tượng quan trọng thứ hai là đối tượng Recordset, đại diện cho một tập hợp các bản ghi từ một bảng hoặc một câu truy vấn. ADO cung cấp nhiều loại con trỏ (cursor) khác nhau, cho phép tối ưu hóa hiệu năng và chức năng tùy theo nhu vực, từ con trỏ forward-only siêu nhanh cho đến con trỏ keyset linh hoạt. Đối tượng Command được sử dụng để thực thi các câu lệnh SQL, bao gồm cả các truy vấn có tham số, giúp ứng dụng an toàn và mạnh mẽ hơn. Cuối cùng, đối tượng Field đại diện cho một cột trong recordset, cho phép truy cập và thao tác với dữ liệu ở cấp độ từng trường. Việc nắm vững cách các đối tượng này tương tác với nhau là chìa khóa để xây dựng các ứng dụng VBA Access có hiệu suất cao và khả năng kết nối đa dạng.

4.1. Thiết lập kết nối CSDL qua đối tượng Connection ADODB

Đối tượng Connection là điểm khởi đầu cho hầu hết các thao tác dữ liệu với ADO. Nó thiết lập một phiên làm việc với nguồn dữ liệu. Để tạo một kết nối, cần khai báo một biến đối tượng ADODB.Connection và sử dụng phương thức Open của nó. Phương thức này yêu cầu một chuỗi kết nối. Ví dụ, để kết nối đến cơ sở dữ liệu Access hiện tại, chuỗi kết nối có thể là "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\path\to\your.mdb;". Việc quản lý kết nối rất quan trọng. Mở kết nối, thực hiện các thao tác cần thiết, sau đó đóng kết nối ngay lập tức bằng phương thức Close để giải phóng tài nguyên. Một kết nối có thể được dùng chung cho nhiều đối tượng RecordsetCommand, giúp tối ưu hóa hiệu suất.

4.2. Các thao tác chính với đối tượng Recordset trong ADO

Đối tượng Recordset trong ADO là công cụ chính để làm việc với dữ liệu. Sau khi một recordset được mở bằng phương thức Open, có thể sử dụng các phương thức MoveFirst, MoveLast, MoveNext, và MovePrevious để duyệt qua các bản ghi. Các thuộc tính BOF (Beginning Of File) và EOF (End Of File) cho biết con trỏ đã ở đầu hay cuối recordset. Để thêm bản ghi mới, sử dụng phương thức AddNew, sau đó gán giá trị cho các trường và gọi phương thức Update. Để sửa bản ghi, chỉ cần thay đổi giá trị các trường và gọi Update. Để xóa, sử dụng phương thức Delete. Lựa chọn CursorTypeLockType khi mở recordset ảnh hưởng lớn đến hiệu năng và khả năng thao tác dữ liệu.

4.3. Thực thi truy vấn mạnh mẽ bằng đối tượng Command

Đối tượng Command cung cấp một cách thức mạnh mẽ và có cấu trúc để thực thi các câu lệnh. Nó đặc biệt hữu ích cho các truy vấn hành động (action queries) như INSERT, UPDATE, DELETE và các truy vấn có tham số. Thay vì ghép chuỗi để tạo câu lệnh SQL, việc sử dụng tham số giúp tránh lỗi SQL injection và làm cho mã nguồn sạch hơn. Lập trình viên tạo một đối tượng Command, gán thuộc tính ActiveConnection với một đối tượng Connection đã mở, đặt thuộc tính CommandText bằng câu lệnh SQL (với các dấu ? cho tham số), sau đó tạo và thêm các đối tượng Parameter vào tập hợp Parameters của Command. Cuối cùng, gọi phương thức Execute để thực thi lệnh. Đối tượng Command cũng có thể trả về một đối tượng Recordset nếu câu lệnh là một truy vấn SELECT.

V. Ứng Dụng Thực Tế Và Tối Ưu Hóa Đối Tượng VBA Access

Lý thuyết về các đối tượng trong VBA Access chỉ thực sự hữu ích khi được áp dụng vào thực tiễn để giải quyết các vấn đề cụ thể và tối ưu hóa ứng dụng. Một trong những kỹ thuật quan trọng là tham chiếu thư viện VBA. Bằng cách thêm tham chiếu đến các thư viện đối tượng khác, như Microsoft Excel Object Library hay Microsoft Outlook Object Library, ứng dụng Access có thể điều khiển các ứng dụng Office khác, ví dụ như tự động xuất dữ liệu ra một file Excel đã được định dạng sẵn hoặc gửi email thông báo từ Outlook. Quá trình phát triển không thể tránh khỏi lỗi, và kỹ năng gỡ lỗi VBA liên quan đến đối tượng là tối quan trọng. Lỗi "Object required" thường xảy ra khi cố gắng sử dụng một biến đối tượng chưa được khởi tạo bằng lệnh Set. Sử dụng các công cụ như cửa sổ Locals và Watch trong VBE (Visual Basic Editor) giúp theo dõi trạng thái và giá trị của các biến đối tượng trong thời gian chạy, từ đó nhanh chóng xác định nguyên nhân lỗi. Tối ưu hóa việc sử dụng đối tượng cũng là một yếu tố then chốt. Ví dụ, khi làm việc với đối tượng Recordset, nên chỉ yêu cầu những trường và bản ghi cần thiết thay vì SELECT *. Sử dụng các loại recordset phù hợp (ví dụ: adOpenForwardOnlyadLockReadOnly của ADO cho việc đọc dữ liệu tuần tự) sẽ cải thiện đáng kể hiệu suất. Cuối cùng, việc viết mã có cấu trúc, sử dụng các module trong Accessclass module để đóng gói logic liên quan đến các đối tượng phức tạp sẽ giúp ứng dụng dễ bảo trì và mở rộng trong tương lai.

5.1. Kinh nghiệm tham chiếu thư viện VBA để mở rộng chức năng

Tham chiếu thư viện VBA là cơ chế cho phép một dự án Access sử dụng các đối tượng được định nghĩa trong các ứng dụng hoặc tệp thư viện khác (DLL, OCX). Để thêm một tham chiếu, từ cửa sổ VBE, chọn menu Tools -> References. Thao tác này mở ra một thế giới các đối tượng mới. Ví dụ, sau khi tham chiếu đến thư viện Excel, có thể khai báo Dim xlApp As Excel.Application và dùng VBA để tạo workbook, điền dữ liệu vào worksheet, và lưu file Excel, tất cả đều từ bên trong Access. Kỹ thuật này biến Access thành một trung tâm điều khiển, tích hợp liền mạch với các ứng dụng khác trong hệ sinh thái Microsoft Office.

5.2. Mẹo gỡ lỗi VBA liên quan đến đối tượng và tập hợp

Khi gỡ lỗi VBA, câu lệnh Debug.Print là một công cụ đơn giản nhưng hiệu quả. Có thể dùng nó để in ra giá trị của các thuộc tính đối tượng hoặc Count của một tập hợp để kiểm tra xem mã có đang tham chiếu đúng đối tượng hay không. Lệnh Stop hoặc sử dụng Breakpoint cho phép tạm dừng thực thi mã tại một điểm cụ thể, sau đó có thể dùng cửa sổ Immediate để kiểm tra và thậm chí thay đổi giá trị của các biến và thuộc tính. Đối với lỗi "Object variable or With block variable not set" (Lỗi 91), hãy kiểm tra lại tất cả các lệnh Set để đảm bảo biến đối tượng đã được gán một tham chiếu hợp lệ trước khi sử dụng.

5.3. Sử dụng module và class module để tổ chức mã nguồn

Khi ứng dụng phát triển, việc đặt tất cả mã VBA vào các module sự kiện của form trở nên khó quản lý. Module trong Access (module chuẩn) là nơi lý tưởng để lưu trữ các hàm và thủ tục chung có thể được gọi từ bất kỳ đâu trong ứng dụng. Điều này thúc đẩy việc tái sử dụng mã. Để tiến xa hơn trong lập trình hướng đối tượng, class module cho phép tạo ra các loại đối tượng tùy chỉnh của riêng mình. Ví dụ, có thể tạo một lớp clsNhanVien với các thuộc tính như HoTen, NgaySinh và các phương thức như TinhTuoi(). Sử dụng các lớp tùy chỉnh giúp đóng gói dữ liệu và hành vi liên quan, làm cho mã nguồn trở nên có cấu trúc, dễ hiểu và dễ bảo trì hơn, phản ánh đúng tinh thần của lập trình hướng đối tượng.

15/07/2025

Trích đoạn nội dung tài liệu

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!

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ