Giới thiệu.
Tuần trước, chúng tôi đã thử một ví dụ để chuyển một Đối tượng Lớp Cơ sở, thông qua Bộ Thủ tục Thuộc tính, để trở thành một phần của Đối tượng trong bộ nhớ. Đối tượng được truyền trở thành một phần mở rộng hoặc Đối tượng con của Đối tượng Chính trong bộ nhớ. Trong chương trình trước đó của chúng tôi, việc chuyển Đối tượng con sang Đối tượng đích đã được thực hiện ở giai đoạn khởi tạo của chương trình thử nghiệm của chúng tôi. Chúng tôi đã gán các giá trị cho Thuộc tính đối tượng được chuyển vào trong phần sau của chương trình. Ví dụ tiếp theo hơi khác một chút.
Đối với những người muốn xem qua các Bài viết trước về Mô-đun lớp MS-Access, các liên kết được cung cấp bên dưới:
- Mô-đun lớp MS-Access và VBA
- Mảng đối tượng lớp VBA MS-Access
- Lớp cơ sở MS-Access và các đối tượng có nguồn gốc
- VBA Base Class và Derived Object-2
Lần này, chúng tôi sẽ mở cả hai Đối tượng (ClsArea - lớp cơ sở, ClsVolume2 - lớp mục tiêu) riêng biệt trong chương trình thử nghiệm của chúng tôi. Gán các giá trị vào Thuộc tính ClsArea Lớp Cơ sở, trước khi chuyển chúng cho Đối tượng ClsVolume2 Lớp đích. Hãy nhớ rằng Lớp Volume2 chỉ có một Thuộc tính của riêng nó, p_Height Thuộc tính và Phương thức của nó Khối lượng () cần Chiều dài và Chiều rộng Giá trị của Cls Lớp cơ sở để tính Khối lượng.
- Sao chép và Dán Mã Thử nghiệm mẫu sau vào Mô-đun Chuẩn.
Thủ tục SetNewVol2_2.
Public Sub SetNewVol2_2() 'Method 2/2 Dim CA As ClsArea Dim Vol As ClsVolume2 Set CA = New ClsArea Set Vol = New ClsVolume2 CA.strDesc = "Bed Room" CA.dblLength = 90 CA.dblWidth = 10 Stop 'Here ClsArea class Object CA is passed to the ‘Property procedure Set CArea of ClsVolume2 object Vol Set Vol.CArea = CA 'Pass ClsArea obj to ClsVolume2 Vol.dblHeight = 10 'assign height to ClsVolume2 Debug.Print "Description", "Length", "Width", "Area", "Height", "Volume" With Vol.CArea Debug.Print .strDesc, .dblLength, .dblWidth, .Area(), Vol.dblHeight, Vol.Volume() End With Stop Set CA = Nothing Set Vol = Nothing End Sub
Xem lại mã VBA.
Trong Dim đầu tiên tuyên bố, CA được định nghĩa là Đối tượng ClsArea và Vol dưới dạng Đối tượng ClsVolume2. Hai câu lệnh tiếp theo khởi tạo cả hai đối tượng trong bộ nhớ.
Ba câu lệnh tiếp theo gán giá trị cho các thuộc tính của Đối tượng lớp ClsArea.
Dừng lại câu lệnh tạm dừng việc thực thi Mã để chúng tôi có thể xác minh các giá trị Thuộc tính Đối tượng trong Cửa sổ Người dân địa phương.
Đặt Vol.CArea =CA câu lệnh gán Đối tượng lớp ClsArea CA, như một đối tượng con vào Vol (ClsVolume2) Đối tượng.
Trong bước tiếp theo dblHeight Thuộc tính của Đối tượng lớp ClsVolume2 được gán giá trị 10.
Các câu lệnh tiếp theo trước câu lệnh Stop in Giá trị từ bộ nhớ vào Cửa sổ gỡ lỗi.
Hai Bộ tiếp theo Các câu lệnh xóa các Đối tượng khỏi bộ nhớ, trước khi kết thúc chương trình.
Hiển thị Cửa sổ Người dân địa phương.
- Chọn Cửa sổ người dân địa phương Tùy chọn từ Menu Chế độ xem.
- Nhấp vào một nơi nào đó ở giữa Mã và nhấn F5 để chạy mã cho đến khi chương trình tạm dừng tại Dừng tuyên bố. Ngoài ra, bạn có thể nhấn F8 để chạy mã từng bước một để kiểm tra Cửa sổ người dân địa phương để tìm các thay đổi ở mỗi bước.
- Nhấp vào [+] Biểu tượng để mở rộng và hiển thị cả Thuộc tính và giá trị của Đối tượng.
- Kiểm tra CArea và p_Area Tham chiếu đối tượng trong Giá trị cột Vol Đối tượng . Giá trị trong đó được hiển thị là Không có gì vì chúng tôi chưa chuyển Đối tượng CA sang Đối tượng Vol.
- Nếu bạn đã xem xong nội dung Cửa sổ Người dân địa phương, hãy chạy mã cho đến lần Dừng tiếp theo tuyên bố. Bây giờ, CArea Nhận thủ tục tài sản và p_Area Đối tượng được gán với Đối tượng lớp ClsArea.
Chúng tôi sẽ thử một ví dụ Biến thể khác của cả hai Lớp này là ClsArea và ClsVolume2.
Mô-đun lớp mới ClsVolume3.
1. Chèn Mô-đun lớp mới và đổi tên Giá trị thuộc tính của nó thành ClsVolume3 .
2. Sao chép và dán Mã VBA sau vào Mô-đun lớp ClsVolume3:
Option Compare Database Option Explicit 'Method three Private p_Height As Double Public p_Area As ClsArea Public Property Get dblHeight() As Double dblHeight = p_Height End Property Public Property Let dblHeight(ByVal dblNewValue As Double) p_Height = dblNewValue End Property Public Function Volume() As Double Volume = p_Area.dblLength * p_Area.dblWidth * Me.dblHeight End Function Private Sub Class_Initialize() Set p_Area = New ClsArea End Sub Private Sub Class_Terminate() Set p_Area = Nothing End Sub
Kiểm tra mã ngay từ đầu: p_Height được tuyên bố là Tài sản riêng. p_Area Thuộc tính của Lớp ClsVolume3 được khai báo là Công khai Đối tượng ClsArea. Điều đó có nghĩa là p_Area sẽ xuất hiện dưới dạng Thuộc tính của Lớp ClsVolume3 với các thuộc tính có thể hiển thị của riêng nó để Nhận / Cho trực tiếp hoạt động trong Chương trình Người dùng trong Mô-đun Chuẩn. Mặc dù Đối tượng Lớp ClsArea đã được khai báo là Thuộc tính Công cộng của Lớp ClsVolume3, các Thuộc tính của nó được đóng gói trong chính Lớp ClsArea.
Kiểm tra Class_Initialize () và Class_Termina () Các quy trình phụ. Đối tượng ClsArea được khởi tạo trong Mã Class_Initialize () và xóa Đối tượng khỏi bộ nhớ trong Mã Class_Termina (), khi chương trình người dùng kết thúc.
Chương trình Thử nghiệm.
Mã VBA thử nghiệm mẫu được cung cấp bên dưới.
Sao chép và dán mã vào Mô-đun chuẩn.
Public Sub SNewVol3() 'Here ClsArea class is declared as a Public Property of ClsVolume3 Dim volm As ClsVolume3 Set volm = New ClsVolume3 volm.p_Area.strDesc = "Bed Room" volm.p_Area.dblLength = 15 'assign length volm.p_Area.dblWidth = 10 'assign width in clsArea volm.dblHeight = 10 'assign height to ClsVolume2 Debug.Print "Description", "Length", "Width", "Area", "Height", "Volume" With volm.p_Area Debug.Print .strDesc, .dblLength, .dblWidth, .Area, volm.dblHeight, volm.Volume End With Set volm = Nothing End Sub
Hiển thị Cửa sổ người dân địa phương (View - -> Locals Window), nếu nó chưa được mở.
Nhấp vào một nơi nào đó ở giữa mã và nhấn F8 để thực thi Mã VBA từng dòng một và xem Cửa sổ cục bộ để theo dõi những gì xảy ra ở mỗi bước.
Tất cả các biến thể trên của Lớp ClsVolume đã được viết với ít Mã hơn, ngoại trừ ví dụ đầu tiên của Lớp ClsVolume.
Làm việc với Đối tượng Tập ghi.
Tuần tới, chúng tôi sẽ làm việc với Đối tượng DAO.Recordset tích hợp sẵn và xây dựng Mô-đun lớp tới:
- Tính toán và cập nhật Trường,
- Sắp xếp dữ liệu,
- In dữ liệu đã sắp xếp vào Cửa sổ gỡ lỗi,
- và Tạo một bản sao của Bảng với dữ liệu được sắp xếp.
Đó là nhiều hành động vào tuần tới.
Danh sách Tất cả các Liên kết về Chủ đề này.
- Mô-đun lớp MS-Access và VBA
- Mảng đối tượng lớp VBA MS-Access
- Lớp cơ sở MS-Access và các đối tượng có nguồn gốc
- Lớp cơ sở VBA và các đối tượng có nguồn gốc-2
- Lớp cơ sở và các biến thể đối tượng có nguồn gốc
- Tập bản ghi Ms-Access và Mô-đun lớp
- Truy cập mô-đun lớp và các lớp gói
- Chuyển đổi chức năng lớp bao bọc
- Thông tin cơ bản về Ms-Access và Đối tượng Bộ sưu tập
- Mô-đun lớp Ms-Access và Đối tượng Bộ sưu tập
- Bản ghi Bảng trong Đối tượng và Biểu mẫu Bộ sưu tập
- Khái niệm cơ bản về đối tượng từ điển
- Khái niệm cơ bản về đối tượng từ điển-2
- Sắp xếp các mục và khóa đối tượng từ điển
- Hiển thị Bản ghi từ Từ điển sang Biểu mẫu
- Thêm các đối tượng lớp dưới dạng các mục từ điển
- Cập nhật Mục Từ điển Đối tượng Lớp trên Biểu mẫu