Access
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Access

VBA Base Class và Derived Object-2

Giới thiệu.

Tuần trước, chúng tôi đã tạo một Đối tượng ClsVolume Lớp Xuất phát, sử dụng Lớp ClsArea làm Lớp Cơ sở. Chúng tôi đã tạo các Thủ tục Thuộc tính trong Lớp Xuất phát để hiển thị các Thuộc tính và Chức năng của Lớp Cơ sở cho các chương trình người dùng Đối tượng. Phương thức này cũng yêu cầu lặp lại tất cả các thủ tục thuộc tính của Lớp cơ sở trong lớp dẫn xuất. Ở đây, chúng tôi khám phá cách tạo cùng một Lớp ClsVolume được tạo ra mà không cần lặp lại các Thủ tục Thuộc tính của Lớp ClsArea Cơ sở.

Chúng tôi đã học cách sử dụng Get Hãy Thủ tục tài sản trong các lớp. Có một thủ tục thuộc tính khác được sử dụng trong Lớp: Bộ Thủ tục tài sản. Thủ tục Thuộc tính Đặt trực tiếp chỉ định một Đối tượng cho một Đối tượng Lớp cùng Loại.

Trước khi tiếp tục, bạn có thể truy cập các trang trước đó về chủ đề này, nếu bạn chưa làm như vậy, 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

ClsVolume Class, Sự lột xác.

Chúng tôi sẽ tạo một biến thể khác của cùng Mô-đun lớp ClsVolume mà chúng tôi đã tạo vào tuần trước, sử dụng ClsArea làm Lớp cơ sở, với cách tiếp cận khác và ít mã hơn.

Tạo Mô-đun lớp mới và thay đổi Giá trị thuộc tính tên của nó thành ClsVolume2 .

Sao chép và dán mã sau vào mô-đun lớp ClsVolume2 và lưu mô-đun:

Option Compare Database
Option Explicit
'Method two-1
Private p_Height As Double
Private 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 * p_Height
End Function

‘Mới Nhận Đặt Thủ tục thuộc tính cho đối tượng ClsArea Thuộc tính công Lấy CArea () Như ClsArea Đặt CArea =p_AreaEnd Thuộc tínhPublic Tập hợp thuộc tính CArea (ByRef AreaValue As ClsArea) Đặt p_Area =Thuộc tính AreaValueEnd

Chọn Biên dịch Tên dự án từ Gỡ lỗi Trình đơn để biên dịch Mã VBA trong Cơ sở dữ liệu để đảm bảo rằng tất cả Mã dự án VBA đều không có lỗi. Nếu bạn gặp lỗi trong các Chương trình VBA khác của mình, vui lòng theo dõi lỗi, sửa nó và biên dịch lại Dự án của bạn. Nếu không, VBA IntelliSense hiển thị danh sách các thuộc tính và chức năng của Đối tượng sẽ không hoạt động. Điều đó sẽ không ngăn chúng ta gán / truy xuất giá trị đến / từ Thuộc tính đối tượng. Tuy nhiên, trong khi học, điều quan trọng là phải thấy Thuộc tính của Đối tượng bật lên và hiển thị danh sách, như một trợ lý trong Mã hóa.


Lấy / Đặt thay vì Thủ tục Nhận / Cho phép Tài sản.

Chúng tôi đã bỏ qua tất cả các thủ tục thuộc tính của ClsArea, được tạo trong phiên bản cuối cùng của ClsVolume Class và thay thế chúng bằng Get / Set Thủ tục tài sản, thay vì Nhận / Cho . Kiểm tra Khu vực khai báo mà chúng tôi đã khai báo p_Area được khai báo là Đối tượng lớp ClsArea.

Khi một Đối tượng được khai báo theo cách này, thông thường chúng ta nên tạo một thể hiện của đối tượng này trong Thủ tục Class_Initialize () trong Đoạn mã trên. Chúng tôi đã không làm điều đó ở đây vì chúng tôi dự định thực hiện điều đó trong Chương trình người dùng và điền vào Thuộc tính của nó bằng các giá trị thích hợp, sau đó chuyển nó cho Lớp ClsVolume2, trước giai đoạn tính toán cuối cùng để sử dụng các giá trị của chúng.

Lưu ý về Đặt CArea () thủ tục. Tham số ByRef của nó là AreaValue được khai báo là Đối tượng ClsArea. Nó sẽ chấp nhận Đối tượng lớp ClsArea khi được chuyển đến CArea Bộ thuộc tính (ByRef AreaValue as ClsArea) , trong biến đối tượng AreaValue, và gán cho p_Area Thuộc tính của ClsVolume2 Đối tượng.

Nhận CArea () Thủ tục thuộc tính trả về Đối tượng cho chương trình đang gọi.

Trong các chương trình trước đó của chúng tôi, chúng tôi đã viết các thủ tục Thuộc tính cho các phần tử riêng lẻ (Chiều dài, Chiều rộng, Chiều cao) của một đối tượng để gán / trả về giá trị Đến / Từ họ. Ở đây, sự khác biệt là chúng ta đang truyền toàn bộ Đối tượng dưới dạng Tham số cho Thủ tục Đặt. Để truy xuất Giá trị thuộc tính của Đối tượng này (giả sử lblHeight), chúng ta phải giải quyết nó là CArea.dblLength . Nhận / Đặt Tên thủ tục tài sản CArea trở thành đối tượng con của Đối tượng chính khi được khai báo trong Chương trình Chính và các Thủ tục Thuộc tính của chúng có thể được truy cập trực tiếp thông qua Địa chỉ Đối tượng Vol.CArea.dblLength.

Một Chương trình Thử nghiệm trong Mô-đun Tiêu chuẩn.

Chúng tôi sẽ viết một chương trình nhỏ trong Mô-đun chuẩn để kiểm tra đối tượng lớp dẫn xuất mới ClsVolume2 của chúng tôi.

Chèn Mô-đun tiêu chuẩn mới vào Dự án của bạn. Sao chép và dán Mã sau vào Mô-đun và Lưu mã:

Public Sub SetNewVol2_1()
'Method 1/2
Dim Vol As New ClsVolume2

'ClsArea Object instantiated and passed to the
'Property Procedure Set CArea in ClsVolume2.

Set Vol.CArea = New ClsArea 'declare and instantiate the object in one statement

Stop

Vol.CArea.strDesc = "Bed Room"
Vol.CArea.dblLength = 90
Vol.CArea.dblWidth = 10

Vol.dblHeight = 10 'assign height to ClsVolume2

Stop

Debug.Print "Description", "Length", "Width", "Area", "Height", "Volume"
Debug.Print Vol.CArea.strDesc, Vol.CArea.dblLength, Vol.CArea.dblWidth, Vol.CArea.Area, Vol.dblHeight, Vol.Volume

Set Vol.CArea = Nothing
Set Vol = Nothing

End Sub

Từng Dòng Xem lại Mã.

Hãy để chúng tôi xem nhanh mã VBA ở trên. Dòng đầu tiên khởi tạo Class ClsVolume2 với tên Vol. Sau hai dòng nhận xét tiếp theo, Đặt tuyên bố với Vol.CArea Thủ tục thuộc tính được gọi và chuyển Mới khởi tạo ClsArea Đối tượng dưới dạng tham số.

Tôi đặt Dừng lại trong dòng tiếp theo để tạm dừng trong Chương trình để xem cách đối tượng đang được gán cho Set CArea Vật. Thế nào? chúng ta sẽ khám phá điều đó sau một phút?

Bốn dòng tiếp theo gán giá trị cho Đối tượng ClsArea và cho thuộc tính Chiều cao của Đối tượng ClsVolume2.

Dừng tiếp theo tạo một khoảng dừng trong Chương trình để chúng tôi có thể kiểm tra bộ nhớ về cách các giá trị được lưu trong bộ nhớ.

Dòng tiếp theo in Tiêu đề trong Cửa sổ gỡ lỗi cho các giá trị được in trên dòng tiếp theo.

Dòng tiếp theo in các giá trị của Thuộc tính đối tượng từ bộ nhớ vào Cửa sổ gỡ lỗi.

Chạy mã đến tuyên bố dừng tiếp theo

Hãy để chúng tôi chạy Mã và kiểm tra bộ nhớ để xem điều gì xảy ra ở đó ở mỗi giai đoạn, nơi tôi đặt câu lệnh Dừng.

  1. Nhấp vào một nơi nào đó ở giữa mã và nhấn F5 để chạy mã và tạm dừng chương trình ở Câu lệnh dừng đầu tiên.
  2. Chọn Cửa sổ người dân địa phương từ Xem Trình đơn để mở một cửa sổ mới bên dưới Cửa sổ Mã, để hiển thị cách các Đối tượng ClsArea và ClsVolume2, thuộc tính của chúng và các thủ tục thuộc tính thành viên của chúng được lưu giữ trong bộ nhớ. Hình ảnh mẫu của Cửa sổ người dân địa phương được đưa ra dưới đây.

    Cửa sổ người dân địa phương Xem.



  3. Kéo các chốt điều khiển định kích thước của Windows khác lên để giảm chiều cao của chúng nhằm cung cấp thêm không gian cho việc hiển thị Người dân địa phương Cửa sổ. Tốt hơn, hãy đóng Cửa sổ gỡ lỗi, tạm thời, hãy sử dụng Ctrl + G để đưa nó trở lại khi cần thiết sau này.

    Chúng tôi có thể có chế độ xem đồ họa của tất cả các đối tượng và Thuộc tính của chúng trong Địa phương Cửa sổ. Tên đầu tiên có biểu tượng dấu cộng [+] hiển thị tên của Mô-đun chuẩn, nơi chương trình của chúng tôi đang chạy.

    Biểu tượng dấu cộng [+] tiếp theo có tên Vol là Đối tượng được khởi tạo ClsVolume2 trong bộ nhớ.

  4. Nhấp vào biểu tượng [+] để mở rộng và hiển thị chi tiết.

    Bạn sẽ tìm thấy cấp độ tiếp theo của Đối tượng và Thuộc tính.

    [+] CArea chỉ ra rằng Đối tượng này có cấp độ tiếp theo của Thuộc tính và Giá trị của chúng.

    dblHeight Thủ tục nhận thuộc tính nằm ngay dưới Đối tượng Vol.

    [+] p_Area là Thuộc tính Tư nhân được khai báo là ClsArea Lớp trong Lớp ClsVolume2.

    p_Height cũng là Tài sản riêng được khai báo trong ClsVolume2.

  5. Nhấp vào dấu cộng [+] các ký hiệu để mở rộng các đối tượng nhằm hiển thị các Thuộc tính và Giá trị của chúng.

    Việc mở rộng [+] CArea cung cấp cho chúng tôi chế độ xem Đối tượng ClsArea mà chúng tôi đã chuyển cho thủ tục thuộc tính Set CArea ().

    Sự mở rộng của [+] p_Area cung cấp chế độ xem Thuộc tính ClsArea được tuyên bố là Riêng tư.

    Lưu ý p_Area Thuộc tính riêng, của Đối tượng lớp ClsVolume2 và tất cả các phần tử của nó chỉ có thể truy cập được thông qua CArea Thuộc tính đối tượng Nhận / Đặt Làm thủ tục với thế giới bên ngoài.

    Cột thứ hai của cửa sổ Người dân địa phương sẽ hiển thị các giá trị được gán cho Thuộc tính đối tượng và hiện không có giá trị nào trong đó.

    Cột thứ ba hiển thị Kiểu dữ liệu hoặc Tên mô-đun lớp đối tượng.

  6. Nhấn F5 để chạy chương trình thêm, cho đến khi chương trình bị tạm dừng ở câu lệnh Stop tiếp theo, để gán một số giá trị vào Thuộc tính đối tượng. Chương trình sẽ tạm dừng ở lần Dừng tiếp theo tuyên bố. Kiểm tra Cửa sổ Người dân địa phương để thay đổi các Giá trị.

Bên trong CArea Đối tượng hai dòng đầu tiên có giá trị 90, 10 và strDesc cuối cùng có giá trị "Phòng ngủ" là Nhận Thủ tục Tài sản. P_Desc, p_Length và p_width là các giá trị được chỉ định thông qua Set Thủ tục về tài sản đối với p_Area Thuộc tính của đối tượng lớp ClsVolume2.

p_Area Đối tượng của Lớp ClsArea được khai báo là Tài sản riêng của ClsVolume2 được nhìn thấy với Get / Set của nó Thủ tục tài sản và giá trị được chỉ định.

Chọn Loại Cột [-] CArea [-] p_Area cả hai đối tượng đều có nguồn gốc từ Lớp cơ sở ClsArea.

Việc sử dụng các đối tượng lớp ClsArea và ClsVolume2 là khác nhau.

Tuần tới, chúng tôi sẽ thử một cách tiếp cận khác với hai đối tượng giống nhau. Nếu bạn muốn tự mình thử, đây là manh mối về cách tự mình thử.

  1. Khởi tạo ClsVolume2 và ClsArea Class dưới dạng hai Đối tượng khác nhau trong Chương trình mô-đun chuẩn.
  2. Gán các giá trị cho cả hai Thuộc tính đối tượng.
  3. Gán Đối tượng khởi tạo ClsArea cho CArea Đối tượng trong Đối tượng lớp ClsVolume2, trước khi in Giá trị vào Cửa sổ gỡ lỗi.

Trong ví dụ này, chúng ta có thể đạt được kết quả tương tự như chúng ta đã làm trong ví dụ trên, mà không cần lặp lại các Thủ tục Nhận / Cho Thuộc tính như chúng ta đã làm trong Mô-đun Lớp ClsVolume.

Liên kết của Tất cả các Trang trên Chủ đề này.

  1. Mô-đun lớp MS-Access và VBA
  2. Mảng đối tượng lớp VBA MS-Access
  3. Lớp cơ sở MS-Access và các đối tượng có nguồn gốc
  4. Lớp cơ sở VBA và các đối tượng có nguồn gốc-2
  5. Lớp cơ sở và các biến thể đối tượng có nguồn gốc
  6. Tập bản ghi Ms-Access và Mô-đun lớp
  7. Truy cập mô-đun lớp và các lớp gói
  8. Chuyển đổi chức năng lớp bao bọc
  9. Thông tin cơ bản về Ms-Access và Đối tượng Bộ sưu tập
  10. Mô-đun lớp Ms-Access và Đối tượng Bộ sưu tập
  11. Bản ghi Bảng trong Đối tượng và Biểu mẫu Bộ sưu tập
  12. Khái niệm cơ bản về đối tượng từ điển
  13. Khái niệm cơ bản về đối tượng từ điển-2
  14. Sắp xếp các mục và khóa đối tượng từ điển
  15. Hiển thị Bản ghi từ Từ điển sang Biểu mẫu
  16. Thêm các đối tượng lớp dưới dạng các mục từ điển
  17. Thêm các đối tượng lớp dưới dạng các mục từ điển
  18. Cập nhật Mục Từ điển Đối tượng Lớp trên Biểu mẫu


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 4 loại thông tin cần đưa vào cơ sở dữ liệu CRM của bạn

  2. Cách thu gọn cơ sở dữ liệu của bạn để nó chạy nhanh hơn

  3. Macro là gì và làm cách nào để sử dụng chúng?

  4. Cách tải các tính năng mới nhất trong Office 365

  5. Tạo phụ thuộc tùy chọn