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

Mô-đun lớp MS-Access và VBA

Giới thiệu.

Vài tuần trước, chúng tôi đã học cách sử dụng Loại do người dùng xác định (UDT) bằng cách tạo cấu trúc dữ liệu phức tạp và chúng tôi đã biết ít nhiều về điểm mạnh hay điểm yếu của UDT. Nếu bạn chưa xem qua các Bài báo đó thì bạn có thể truy cập chúng. Sử dụng các liên kết sau:

  • Kiểu dữ liệu do người dùng xác định-2
  • Kiểu dữ liệu do người dùng xác định-3

Trong Microsoft Access, có hai loại Mô-đun VBA.

  1. Mô-đun tiêu chuẩn
  2. Mô-đun lớp

Chúng tôi đã làm việc với Mô-đun lớp trên Biểu mẫu Báo cáo của Microsoft Access. Các chương trình của Mô-đun lớp Biểu mẫu / Báo cáo chủ yếu là theo hướng Sự kiện (Nhấp vào nút, Trước khi Cập nhật, Biểu mẫu / Báo cáo Sự kiện hiện tại, v.v.) các quy trình nhỏ.

Xử lý dữ liệu nghiêm túc hơn Các chương trình sẽ được viết trong Mô-đun chuẩn. Một số chương trình, không nhất thiết phải liên quan, có thể được viết trong một Mô-đun chuẩn, để thực hiện các nhiệm vụ khác nhau.

Các Mô-đun Lớp là khác nhau. Chúng được sử dụng để xây dựng Đối tượng tùy chỉnh và một Mô-đun lớp chỉ được sử dụng cho một đối tượng.

Khái niệm cơ bản về Mô-đun lớp độc lập.

Hãy để chúng tôi tạo Mô-đun lớp đơn giản từ đầu và tìm hiểu những điều cơ bản.

  1. Khởi động Microsoft Access và Mở Cơ sở dữ liệu hoặc Tạo cơ sở dữ liệu mới. Nếu đó là Cơ sở dữ liệu mới thì hãy lưu nó vào Vị trí tin cậy hiện có (Thư mục) hoặc thêm Vị trí mới vào danh sách vị trí đáng tin cậy. Bấm vào Nút Office -> Tùy chọn Access—> Trung tâm Tin cậy -> Cài đặt Trung tâm Tin cậy. Thêm thư mục cơ sở dữ liệu vào danh sách và nhấp vào OK.
  2. Mở Cửa sổ chỉnh sửa VBA (Alt + F11).
  3. Nhấp vào Chèn Trình đơn và chọn Mô-đun lớp khỏi danh sách. Một Mô-đun Lớp mới được chèn vào.

  • Trong bảng điều khiển bên trái, có Tên kiểm soát với tên Class1.
  • Thay đổi tên Class1 tới ClsArea . Đây là tên của Đối tượng tùy chỉnh của chúng tôi.

  • Lưu ý: Tên lớp: ClsArea trở thành Tên đối tượng. Điều đó có nghĩa là, bất cứ nơi nào chúng tôi sử dụng đối tượng này, nó sẽ giống như một khai báo biến bình thường: Dim xyz As ClsArea . Chúng tôi đã viết một câu lệnh tương tự cho các khai báo Kiểu dữ liệu do người dùng xác định.

    Tiếp theo, chúng tôi sẽ thêm ba Thuộc tính (Biến) của Đối tượng (cho Mô tả, Chiều dài, Chiều rộng ) ở đầu mô-đun, bên dưới Cơ sở dữ liệu so sánh tùy chọn Tùy chọn rõ ràng các dòng. Nhập các dòng sau vào Mô-đun Lớp.

     Option So sánh DatabaseOption ExplicitPublic p_Desc as StringPublic p_Length as DoublePublic p_Width as Double 

    Các biến này được xác định là Thuộc tính của Đối tượng Lớp Tùy chỉnh VBA. Lưu Mô-đun Lớp học.

    Lưu ý: Đối tượng Mô-đun Lớp và các dòng mã của chúng ta sẽ không đơn giản như vậy. Nó sẽ trải qua những thay đổi với một số dòng mã. Tốt hơn hết hãy chuẩn bị để theo dõi chúng từng bước một mà không mất công theo dõi từng giai đoạn thay đổi. Đây là một Lớp tính toán diện tích đơn giản ( diện tích =chiều dài * chiều rộng ), thật đơn giản. Nó sẽ dần dần trải qua những thay đổi để bạn biết tại sao những thay đổi đó lại trở nên cần thiết.

    Chúng tôi sẽ viết một chương trình nhỏ trong Mô-đun chuẩn để kiểm tra Mô-đun lớp mới của chúng tôi. Chèn một Mô-đun chuẩn từ Menu Chèn. Bạn có thể Nhập hoặc Sao chép và Dán Mã sau vào Mô-đun chuẩn, ghi đè lên dòng hiện có trong Mô-đun:

     Option So sánh DatabaseOption ExplicitPublic Function ClassTest1 () Dim oArea As ClsAreaSet oArea =New ClsAreaoArea.Set oArea =NothingEnd Function 

    Dim câu lệnh khai báo một Biến như chúng ta làm đối với một biến bình thường, như Dim Desc as String. Tuy nhiên, đây không phải là một biến thông thường mà chúng tôi đang đặt tham chiếu đến Đối tượng mô-đun lớp của chúng tôi ClsArea . Vì nó là một đối tượng, một câu lệnh Thứ nguyên đơn giản thôi là không đủ vì nó sẽ không cấp phát bất kỳ không gian bộ nhớ nào để lưu trữ các giá trị vào Đối tượng được xác định cục bộ của chúng tôi oArea Thuộc tính.

    Bộ trong dòng tiếp theo với câu lệnh Mới từ khóa bắt buộc, để tạo một phiên bản của đối tượng ngoài ClsArea trong bộ nhớ, với Tên phiên bản đối tượng oArea . Chúng ta có thể mở một số trường hợp của cùng một Đối tượng Lớp trong bộ nhớ theo cách này nếu cần, (Chúng ta sẽ tìm hiểu về chúng trong những tuần tới) để chúng ta có thể lưu trữ các giá trị vào Thuộc tính của nó (p_Desc, p_Length, p_Width). p_ tiền tố cho các biến là một chỉ báo rằng Phạm vi của biến là Riêng tư, tức là các Biến không hiển thị bên ngoài Mô-đun lớp nếu biến được khai báo với từ khóa Private, nhưng bây giờ nó được khai báo là Public. Tên biến có thể là bất kỳ tên hợp lệ nào.

    Lưu ý: Chúng tôi vẫn chưa tuyên bố nó là Riêng tư. Chúng tôi đang trên đường hướng tới sự thay đổi đó.

    Ngay sau từ khóa Đặt tên Đối tượng cục bộ (bạn có thể chọn một tên phù hợp mà bạn thích nhưng tên đó phải tuân theo các quy tắc tên biến thông thường) theo sau là dấu bằng và từ khóa Mới Tên mô-đun lớp (ClsArea) để tạo một thể hiện của Đối tượng clsArea trong bộ nhớ với tất cả các Thuộc tính (Biến) của nó.

    Có một phím tắt cho mã hai dòng này. Các hành động của cả hai dòng mã này có thể đạt được bằng một câu lệnh như được hiển thị bên dưới:

     Dim oArea As ClsAreaSet oArea =New ClsArea Không phải lối tắt cho hai câu lệnh trênDim oArea As New ClsArea 

    Khi bạn nhập dòng tiếp theo oArea theo sau là dấu chấm (. ) dấu phân tách, màn hình sau sẽ xuất hiện để hiển thị danh sách các Thuộc tính Đối tượng Tùy chỉnh có sẵn để chọn.

    Nếu nó không xuất hiện, hãy chuyển đến hộp thoại Tùy chọn từ hộp trình đơn Công cụ và đánh dấu chọn trong Danh sách Thành viên Tự động trong Tab Trình chỉnh sửa.

    Trước khi thoát khỏi Hàm, câu lệnh cuối cùng phải là Đặt oArea =Không có gì . Câu lệnh này giải phóng rõ ràng bộ nhớ bị chiếm bởi phiên bản của Đối tượng tùy chỉnh, để có thêm bộ nhớ cho các chương trình khác. Đây là hoạt động dọn dẹp có trách nhiệm của chương trình của chúng tôi.

    Bất cứ điều gì chúng ta làm với Đối tượng tùy chỉnh được khởi tạo phải được mã hóa giữa Bộ đầu tiên và cuối cùng tuyên bố.

    Chương trình Kiểm tra Đối tượng Lớp ClsArea.

    Mã chương trình kiểm tra lớp hoàn chỉnh được cung cấp bên dưới:

     Option So sánh DatabaseOption ExplicitPublic Function ClassTest1 () Dim oArea As ClsAreaSet oArea =New ClsAreaoArea.p_Desc ="Carpet" oArea.p_Length =25oArea.p_Wrintidth =15Debug.Print "Description", "Length", "Width" oArea.p_Desc, oArea.p_Length, oArea.p_WidthSet oArea =NothingEnd Function 

    Nhấp vào một nơi nào đó ở giữa Mã và nhấn F5 để chạy chương trình. Quá trình chạy chương trình được đưa ra dưới đây để tham khảo.

     Mô tả Chiều dài Chiều rộng Thảm 25 15 

    Công khai | Phạm vi Riêng tư của Thuộc tính Đối tượng.

    Đối tượng mô-đun lớp đơn giản của chúng tôi có một số nhược điểm và chúng tôi sẽ khắc phục chúng.

    Điều đầu tiên là chúng tôi đã khai báo tất cả các Biến (hoặc Thuộc tính) bằng Công khai Phạm vi. Do đó, chúng hiển thị với các chương trình VBA khác và có thể bị thay đổi giá trị trực tiếp. Vấn đề thứ hai là nó sẽ chấp nhận bất kỳ giá trị không hợp lệ nào, như giá trị âm hoặc giá trị 0, không phù hợp với Đối tượng Lớp của chúng tôi. Chúng tôi phải kết hợp một số kiểm tra xác thực trước khi chấp nhận các giá trị vào các biến.

    Vấn đề đầu tiên chúng tôi có thể giải quyết dễ dàng bằng cách thay đổi khai báo biến từ Công khai thành Riêng tư . Khi chúng ta làm điều đó, chúng ta nên có một số phương thức gián tiếp để lưu trữ và truy xuất các giá trị từ Biến riêng. Đó là mục đích của Nhận Hãy Thủ tục Tài sản, cho từng Tài sản của Đối tượng. Hãy để chúng tôi thực hiện những thay đổi này trong Mô-đun lớp.

    Mở Mô-đun lớp ClsArea. Thay đổi từ Công khai thành Riêng tư cho cả ba biến.

    Tạo thủ tục tài sản

    Chọn Quy trình từ Chèn Trình đơn, nhập strDesc trong Tên kiểm soát văn bản, chọn Thuộc tính trong Loại Nhóm tùy chọn và Công khai trong Phạm vi nhóm tùy chọn. Nhấp vào OK để chèn Thủ tục thuộc tính cho p_Desc riêng tư Biến (Thuộc tính).

     Option Compare DatabaseOption ExplicitPrivate p_Desc As StringPrivate p_Length As DoublePrivate p_Width As DoublePublic Property Lấy strDesc () As String strDesc =p_Desc 'trả về giá trị từ p_DescEnd PropertyPublic Property Cho strDesc (ByVal strNewValueal As String) lưu trữ giá trị p Thuộc tính p_DescEnd 

    Cả Nhận Thủ tục và Hãy Thủ tục được khai báo là Công khai . Cả hai tên Thủ tục đều giống nhau strDesc. Theo mặc định, trả về kiểu dữ liệu là Biến thể trong Nhận Thủ tục và kiểu dữ liệu Tham số cũng được chèn dưới dạng Biến thể trong Let Thủ tục. Chúng tôi có thể thay đổi các loại này thành các loại cụ thể nếu cần, chúng tôi đã làm và đổi thành Chuỗi gõ phím. Ba chữ cái đầu tiên str trong strDesc cung cấp cho Người dùng gợi ý rằng Thuộc tính mong đợi một giá trị kiểu dữ liệu Chuỗi. Thay đổi Let Thủ tục thuộc tính Tham số Tên biến vNewValue thành strNewValue

    Khi chúng tôi chèn Thủ tục thuộc tính, chúng luôn được chèn bằng Nhận Hãy Các cặp thủ tục cho một biến.

    Bây giờ, hãy xem xét kỹ biểu thức mà chúng tôi đã viết trong Get Thủ tục. Phía bên trái của = Ký tên của Thủ tục lấy strDesc hoạt động như một biến để trả về giá trị được sao chép từ Biến riêng p_Desc vào chương trình gọi điện.

    Hãy Thủ tục strDesc chấp nhận giá trị Chuỗi trong Biến tham số strNewValue . Giá trị đầu vào được chuyển vào biến riêng của chúng tôi p_Desc.

    Điểm cần lưu ý ở đây là không có quyền truy cập trực tiếp vào biến private p_Desc của chúng ta với thế giới bên ngoài. Vận chuyển các giá trị Từ / Đến Biến (Thuộc tính) p_Desc luôn được định tuyến thông qua Nhận / Cho phép Chỉ thủ tục tài sản và tuân theo Kiểm tra xác thực (chưa được triển khai), Chúng tôi sẽ giới thiệu các kiểm tra xác thực đối với các giá trị đầu vào (Quy trình thực hiện) vào Thuộc tính sau.

    Nhận / Cho phép Các thủ tục được thực thi tự động tùy thuộc vào những gì chúng ta làm với thuộc tính Đối tượng trong một biểu thức trong Chương trình VBA.

    Nhận thủ tục được thực thi khi chúng ta sử dụng Tên thuộc tính trong một biểu thức theo cách sau:

     ‘Đọc giá trị từ p_Desc đến PrintDebug.Print oArea.strDescOR‘ Đọc giá trị từ p_Desc và gán nó cho biến XX =oArea.strDesc 

    Hãy Thủ tục Thuộc tính được chạy khi chúng tôi cố gắng gán một giá trị vào Tên thuộc tính. Kiểm tra biểu thức ví dụ trong Chương trình Kiểm tra của chúng tôi bên dưới:

     oArea.strDesc =“Thảm” 

    Trong các sách Ngôn ngữ CƠ BẢN trước đó, bạn có thể thấy cách sử dụng từ khóa LET.

     LET X =25 ‘LET là tùy chọn 

    Vì nó là tùy chọn nên câu lệnh hoạt động mà không có nó và ngừng sử dụng nó.

    Đây, nếu bạn chỉ đọc một số giá trị từ một Biến và không lưu trữ trực tiếp bất kỳ thứ gì vào đó thì bạn có thể bỏ qua Thủ tục Let và chỉ sử dụng Nhận Thủ tục.

    Quy tắc này cũng áp dụng cho thủ tục Let. Bạn chỉ có thể sử dụng Let Thủ tục, nếu bạn đang chỉ định một số giá trị vào Biến riêng nhưng không đọc lại bất kỳ thứ gì từ cùng một biến thì bỏ qua Thủ tục lấy.

    Nhận Hãy Các thủ tục sẽ chạy lần lượt nếu biểu thức của chúng ta giống như sau:

     oArea.strDesc =oArea.strDesc &“- King Size.” 

    Trong biểu thức trên, chúng tôi sẽ Nhận giá trị hiện có từ Biến riêng p_Desc và sửa đổi mô tả và lưu trữ lại vào cùng một biến. Tóm lại trong một biểu thức nếu bạn sử dụng tên Thuộc tính ở bên phải của dấu bằng ( = ) Nhận Thủ tục được gọi và Let Thủ tục được chạy khi tên thủ tục thuộc tính đối tượng xuất hiện ở bên trái của dấu bằng ( = ) ký.

    Chèn hai bộ Thủ tục thuộc tính cho các biến p_Length p_Width. Khi bạn cung cấp tên Thủ tục trong Tên kiểm soát cung cấp tên dblLength dblWidth để gợi ý cho Người dùng rằng các Thuộc tính này mong đợi các số Chính xác kép làm Đầu vào.

    Đối tượng lớp ClsArea với các thủ tục thuộc tính của nó.

    Mã đã hoàn thành cho đến nay với Quy trình thuộc tính dblLength và dblWidth được đưa ra bên dưới để tham khảo và cập nhật mã của bạn.

     Option Compare DatabaseOption ExplicitPrivate p_Desc As StringPrivate p_Length As DoublePrivate p_Width As DoublePublic Property Lấy strDesc () As String strDesc =p_Desc 'sao chép giá trị từ p_DescEnd PropertyPublic Property Cho strDesc (Thuộc tính ByVal strNewValueal As String ) Như Double dblLength =p_LengthEnd PropertyPublic Thuộc tính Cho dblLength (ByVal dblNewValue Dưới dạng Double) p_Length =dblNewValueEnd PropertyPublic Thuộc tính Lấy dblWidth () Như Double dblWidth =p_WidthEnd PropertyPublic PropertyNewValue As Double) p_Length =dblNewValueEnd PropertyPublic Thuộc tính Lấy dblWidth () As Double dblWidth =p_WidthEnd PropertyPublic PropertyNewValue As Double 

    Chương trình Thử nghiệm có Thay đổi.

    Nếu bạn đang hoàn thành đoạn mã trên thì hãy để chúng tôi thực hiện các thay đổi đối với chương trình thử nghiệm của mình, để phản ánh những thay đổi mà chúng tôi đã thực hiện tại đây. Mã mẫu sửa đổi được đưa ra bên dưới.

     Option So sánh DatabaseOption ExplicitPublic Function ClassTest1 () Dim oArea As ClsAreaSet oArea =New ClsArea'Property Hãy để các thủ tục được gọi là hereoArea.strDesc ="Carpet" oArea.dblLength =25oArea.dblW =15Debugidth "," Description " Thuộc tính "Width" 'Get Thủ tục được gọi ở đây để printDebug.Print oArea.strDesc, oArea.dblLength, oArea.dblWidthSet oArea =NothingEnd Function 

    Khi bạn nhập dấu chấm (.) Ngay sau tên đối tượng oArea (oArea.), Danh sách các tên thuộc tính Thủ tục được hiển thị bởi VBA IntelliSense và bạn có thể chọn tên bắt buộc từ danh sách mà không cần nhập thủ công.

    Mục đích của Đối tượng Lớp này là để tính toán diện tích của một thứ gì đó, chẳng hạn như Diện tích Phòng, Thảm, Ngói sàn hoặc bất kỳ vật liệu nào có giá trị Chiều dài và Chiều rộng. Điều đó có nghĩa là chúng ta cần một Hàm Công cộng để tính Diện tích của các Giá trị Chiều dài, Chiều rộng và Mô tả của bất kỳ mục nào được nhập vào Đối tượng Lớp.

    Phương pháp đối tượng ClsArea:Area ()

    Đây là Mã cho Chức năng Công cộng:

     Vùng chức năng công cộng () As Double Area =Me.dblLength * Me.dblWidthEnd Function 

    Bạn có thể chèn Chức năng này từ Chèn Trình đơn bằng cách nhập Khu vực trong Tên Kiểm soát, chọn Chức năng từ Loại nhóm tùy chọn và Công khai dưới dạng Phạm vi vào Mô-đun lớp ClsArea. Hoàn thành Hàm bằng cách nhập dòng ở giữa.

    Chúng tôi có thể giải quyết trực tiếp các biến p_Length và p_Width (vì Hàm Area () là một phần của Mô-đun Lớp) trong biểu thức tính Diện tích. Tuy nhiên, chúng tôi đang sử dụng tuyến đường thích hợp và gọi Get Thủ tục dblLength và dblWidth để tính toán. Bạn có thể đã nhận thấy tham chiếu Tôi. được sử dụng để đủ điều kiện cho các Thủ tục lấy dblLength, dblWidth, giống như chúng ta đã sử dụng để viết trong các Mô-đun Lớp Biểu mẫu / Báo cáo, để tham chiếu đến Đối tượng hiện tại trong bộ nhớ và các Thuộc tính của nó. Như tôi đã nêu trước đó Đối tượng lớp tùy chỉnh của chúng tôi có thể có một số phiên bản Đối tượng được mở trong bộ nhớ cùng một lúc và Tôi từ khóa đề cập đến phiên bản hiện tại mà Khu vực chức năng () thuộc về.

    Chức năng Kiểm tra với Sửa đổi.

    Sửa đổi hàm kiểm tra ClassTest1 () của chúng tôi để kết hợp đầu ra hàm Area () như sau:

     Option So sánh DatabaseOption ExplicitPublic Function ClassTest1 () Dim oArea As ClsAreaSet oArea =New ClsAreaoArea.strDesc ="Carpet" oArea.dblLength =25oArea.dblWidth =15Debug.Print "Description", "Length", "Width" "Debug.Print oArea.strDesc, oArea.dblLength, oArea.dblWidth, oArea.AreaSet oArea =NothingEnd Function 

    Thay đổi chỉ trong các câu lệnh Debug.Print. Chạy mã và kiểm tra Cửa sổ gỡ lỗi để biết kết quả.

    Có hai thủ tục sự kiện được yêu cầu trong Mô-đun lớp tùy chỉnh: Class_Initialize () Class_Termina () .

    Phương thức Thực thi Tự động.

    Class_Initialize () chương trình được thực thi tự động khi chúng tôi khởi tạo một Đối tượng bằng Mới Từ khóa. Chương trình này có thể được sử dụng để đặt các giá trị mặc định thành các biến hoặc Khởi tạo các đối tượng khác trong bộ nhớ. Một Đối tượng Lớp có thể sử dụng các Lớp khác làm (các) đối tượng con và cần được khởi tạo. Khía cạnh này chúng ta sẽ khám phá thêm và tìm hiểu cách thực hiện sau.

    Class_Termina () chương trình chạy khi chúng tôi cố gắng xóa đối tượng khỏi bộ nhớ khi nút Không có gì từ khóa được chạy trong câu lệnh Set oArea =Nothing . Khi chương trình sử dụng Đối tượng Lớp kết thúc, Bản thể hiện của Đối tượng trong bộ nhớ sẽ bị xóa theo mặc định. Nhưng thực tế lập trình tốt là chúng tôi sử dụng Set oArea =Nothing là câu lệnh thực thi cuối cùng trong chương trình của chúng tôi để xóa đối tượng khỏi bộ nhớ.

    Chúng tôi sẽ thêm các chương trình trên vào Mô-đun Lớp của chúng tôi. Thêm mã sau vào cuối Mô-đun lớp học của bạn:

     Private Sub Class_Initialize () p_Length =0 p_Width =0 'MsgBox "Initialize.", vbInformation, "Class_Initialize ()" End SubPrivate Sub Class_Termina ()' MsgBox "Termina.", vbInformation, "Class_Termina ()" End Sub 

    Nếu bạn muốn kiểm tra hai quy trình con này thì hãy xóa biểu tượng Nhận xét và làm cho MsgBox hoạt động. Chạy chương trình thử nghiệm của bạn một lần nữa. Bạn sẽ tìm thấy nút Khởi tạo thông báo xuất hiện ở đầu (Nhấp vào OK để tiếp tục) và thông báo Chấm dứt thông báo xuất hiện ở cuối Chương trình Kiểm tra.

    Tôi biết bạn đang nghĩ gì lúc này, chẳng hạn như "quá nhiều mã để nhân hai biến với nhau". Điều đó đúng trong quan điểm đó, nhưng rất có thể chúng ta đã viết mã cho các vấn đề giải quyết vấn đề tương tự lặp đi lặp lại mỗi lần, sao chép mã để kiểm tra xác thực và cho các biện pháp bảo vệ lỗi logic khác.

    Ở đây, chúng tôi không viết một Chương trình thông thường mà đang phát triển một Đối tượng tùy chỉnh có thể được sử dụng nhiều lần hoặc có thể là một phần của các Đối tượng khác, bất cứ nơi nào chúng tôi cần mà không cần lo lắng về cách nó hoạt động, theo quan điểm của người dùng. Microsoft Access có nhiều Đối tượng / Hàm tích hợp sẵn mà chúng tôi sử dụng mọi lúc mà không cần lo lắng về cách hoạt động của nó, bằng cách đặt Thuộc tính hoặc Tham số của chúng và hoàn thành công việc.

    Chúng tôi còn một vấn đề nữa cần giải quyết, quy trình xác thực kiểm tra các giá trị được nhập vào dblNewValue Tham số trong Let Thủ tục tài sản của dblLength () dblWidth (), để đảm bảo rằng các giá trị hợp lệ được gán cho Thuộc tính đối tượng p_Length p_Width .

    Giá trị Âm hoặc 0 đã nhập được coi là không hợp lệ và chúng tôi phải thực hiện các biện pháp phòng ngừa để thấy rằng giá trị chính xác được nhập bởi Người dùng.

    Thực hiện Kiểm tra Xác thực.

    Let đã được sửa đổi Các phân đoạn Mã thủ tục tài sản được đưa ra dưới đây. Thực hiện các thay đổi trong mã của bạn cho phù hợp.

     Thuộc tính công cộng Để dblLength (ByVal dblNewValue làm đôi) Thực hiện trong khi dblNewValue <=0 dblNewValue =InputBox ("Giá trị âm / 0 Không hợp lệ:", "dblLength ()", 0) Vòng lặp p_Length =dblNewValueEnd Thuộc tính dblNewValue As Double) Thực hiện trong khi dblNewValue <=0 dblNewValue =InputBox ("Giá trị Phủ định / 0 Không hợp lệ:", "dblwidth ()", 0) Vòng lặp p_Width =dblNewValueEnd Thuộc tính 

    Thực hiện trong khi. . . Vòng lặp chạy nhiều lần cho đến khi giá trị hợp lệ (lớn hơn 0) được nhập vào dblNewValue bởi Người dùng

    Kiểm tra xác thực trong phương pháp công khai:Area ()

    Chúng tôi cần thêm một lần kiểm tra xác thực trong Khu vực () Hàm số. Nếu người dùng gọi hàm Area () mà không nhập các giá trị hợp lệ cho Chiều dài và Chiều rộng trước, thì Người dùng phải được thông báo về nó. Chúng tôi sẽ kiểm tra xem các biến p_Length và p_Width có giá trị hợp lệ hay không trước khi chạy biểu thức để tính diện tích. Đây là mã:

     Vùng chức năng công cộng () Dưới dạng Double If (Me.dblLength> 0) Và (Me.dblWidth> 0) Then Area =Me.dblLength * Me.dblWidth Else Area =0 MsgBox "Lỗi:Giá trị Chiều dài / Chiều rộng (s ) Không hợp lệ., Chương trình đã bị hủy bỏ. " Kết thúc hàm IfEnd 

    Mã Hoàn chỉnh của Đối tượng ClsArea.

    Mã hoàn chỉnh đầy đủ của Mô-đun lớp ClsArea của chúng tôi được cung cấp bên dưới:

     Option Compare DatabaseOption ExplicitPrivate p_Desc As StringPrivate p_Length As DoublePrivate p_Width As DoublePublic Property Lấy strDesc () As String strDesc =p_Desc 'sao chép giá trị từ p_DescEnd PropertyPublic Property Cho strDesc (Thuộc tính ByVal strNewValueal As String ) Như Double dblLength =p_LengthEnd PropertyPublic Thuộc tính Để dblLength (ByVal dblNewValue Như Double) Thực hiện Trong khi dblNewValue <=0 dblNewValue =InputBox ("Giá trị Phủ định / 0 Không hợp lệ:", "dblLength ()", 0) Vòng lặp p_Length thuộc tính dblNewValue GetEnd dblWidth () As Double dblWidth =p_WidthEnd PropertyPublic Thuộc tính Hãy để dblWidth (ByVal dblNewValue As Double) Làm trong khi dblNewValue <=0 dblNewValue =InputBox ("Giá trị âm / 0 Không hợp lệ:", "dblwidth ()", 0) Vòng lặp p_WublicalueEblNewValue Vùng hàm () As Double If (Me.dblLength> 0) And (Me.dblWidth> 0) Then Area =Me.dblLength * Me.dblWidth Khu vực khác =0 MsgBox "Lỗi:(Các) giá trị Chiều dài / Chiều rộng không hợp lệ., Chương trình bị hủy bỏ." End IfEnd FunctionPrivate Sub Class_Initialize () p_Length =0 p_Width =0 'MsgBox "Initialize.", VbInformation, "Class_Initialize ()" End SubPrivate Sub Class_Termina ()' MsgBox "Chấm dứt.", VbInformation, "Class_Termina ()" End Sub 

    Các thủ tục và phương pháp kiểm tra thuộc tính.

    Bạn có thể kiểm tra Đối tượng lớp tùy chỉnh của chúng tôi bằng cách nhập các giá trị âm hoặc 0 làm đầu vào cho Thuộc tính dblLength, dblWidth.

    Trong Chương trình Kiểm tra Nhận xét, hãy đưa ra các dòng (oArea.dblLength =25 và oArea.dblWidth =15) để kiểm tra hàm Area (). Nó sẽ hiển thị thông báo Lỗi mà chúng tôi đã viết trong hàm.

    Mô-đun Lớp tính toán Diện tích của chúng tôi hiện đã được coi là hoàn thành và chúng tôi đã kiểm tra và nhận thấy nó đang hoạt động chính xác. Bạn có thể kiểm tra nó thêm cho bất kỳ lỗi logic nào mà tôi đã bỏ qua. Nếu bạn gặp bất cứ điều gì mà tôi không lường trước được, hãy chia sẻ với tôi.

    Kế hoạch Kiểm tra Tương lai.

    Chúng tôi đã kiểm tra Đối tượng Lớp chỉ cho một mục. Chúng ta cần tính diện tích của một số vật dụng (ví dụ như diện tích của 5 phòng ngủ hoặc 10 tấm thảm có kích thước khác nhau, v.v. vào từng phiên bản của Đối tượng và có thể làm việc với chúng.

    Bên cạnh đó, Đối tượng này có thể được sử dụng như một phần của các Đối tượng khác mà chúng tôi phát triển với mã thấp hơn vì một phần của Đối tượng lớp mới của chúng tôi đã được phát triển trong Mô-đun lớp ClsArea.

    Tuần tới, chúng ta sẽ học cách tạo Mảng đối tượng tùy chỉnh để tính diện tích của một số mục.

    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à Khoá Đố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. 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. Microsoft Access KHÔNG bị chết và cũng không phải là VBA

    2. Sắp xếp lại các nút TreeView bằng cách kéo và thả

    3. Cách thêm đầu trang và chân trang vào báo cáo trong Microsoft Access

    4. Cơ sở dữ liệu quan hệ là gì?

    5. Tạo và truy cập cơ sở dữ liệu và bảng OLTP trong bộ nhớ