Access
 sql >> Teknologi Basis Data >  >> RDS >> Access

Kelas Dasar MS-Access dan Objek Turunannya

Pengantar.

Jika Anda belum melihat Postingan sebelumnya di Modul Kelas Microsoft Access, silakan baca sebelum melanjutkan, tautannya diberikan di bawah ini.

  1. Modul Kelas MS-Access dan VBA.
  2. Array Objek Kelas VBA MS-Access.

Area Cls Kelas dapat tampil sebagai Kelas Dasar di Objek Kelas lain, perhitungan yang dilakukan oleh kelas dasar dapat digunakan sebagai bagian dari perhitungan objek baru. Misalnya, Ini bisa menjadi bagian dari Objek yang menghitung Volume sesuatu,

dbl dalam dblLength dan dblWidth Nama Prosedur Properti untuk Dapatkan/Biarkan Prosedur hanyalah indikasi bahwa Objek Kelas mengharapkan Nilai Panjang dan Lebar dalam angka presisi ganda. Demikian pula, Jika kita mengubah Nama Prosedur Properti menjadi Kuantitas dan Harga Satuan maka nilai pertama dikalikan dengan nilai kedua memberi kita Harga Total dari beberapa item.

Ini berarti bahwa Anda dapat menggunakan Kelas ClsArea sebagai kelas dasar, di mana pun Anda membutuhkan hasil dari nilai pertama dikalikan dengan nilai kedua, seperti Harga Total * Tarif Pajak untuk menghitung jumlah pajak atau Harga Total * Tingkat Diskon untuk menemukan Jumlah Diskon dan seterusnya.

Meskipun kami telah mengembangkan Modul Kelas sederhana, itu dapat menjadi bagian dari banyak Kelas turunan lainnya. Kemungkinannya terbuka untuk imajinasi dan kreativitas Anda.

Kelas ClsArea kami menghitung luas material, Ruangan, atau item serupa dengan Properti Panjang dan Lebar saja. Itu tidak menghitung luas Segitiga atau Lingkaran. Tapi, itu bisa menjadi bagian dari Objek Kelas baru yang menghitung Volume Kamar, Gudang untuk menemukan kapasitas penyimpanan. Untuk itu, kita membutuhkan satu nilai lagi Height of Room, Warehouse, dll.

Kelas Volume:ClsVolume.

Mari kita buat Modul Kelas baru ClsVolume, menggunakan ClsArea sebagai Kelas Dasar. Masukkan Modul Kelas dan ubah Nama Properti untuk ClsVolume . Ketik atau Salin dan Tempel Kode berikut ke dalam Modul Kelas.

Option Compare Database
Option Explicit

Private p_Area As ClsArea
Private p_Height As Double

Private Sub Class_Initialize()
    Set p_Area = New ClsArea
End Sub

Private Sub Class_Terminate()
    Set p_Area = Nothing
End Sub

Public Property Get dblHeight() As Double
    dblHeight = p_Height
End Property 

Public Property Let dblHeight(ByVal dblNewValue As Double)
   Do While Val(Nz(dblNewValue, 0)) <= 0
      dblNewValue = InputBox("Negative/0 Values Invalid:", "dblHeight()", 0)
    Loop
    p_Height = dblNewValue
End Property

Public Function Volume() As Double

If (p_Area.Area() > 0) And (p_Height > 0) Then
    Volume = p_Area.Area * p_Height
Else
    MsgBox "Enter Valid Values for Length,Width and Height.", , "ClsVolume"
End If

End Function

Kode Objek Kelas ClsVolume belum lengkap. Mari kita periksa kode baris demi baris. Di baris ketiga dinyatakan sebagai Milik Pribadi p_Area dari Objek Kelas ClsArea.

Baris berikutnya mendeklarasikan Properti Pribadi dengan nama p_Height bertipe data Ganda.

Sub-Rutinitas Class_Initialize() dan Class_Terminate().

Dua Sub-Rutinitas Berikutnya (Initialize() dan Hentikan() ) sangat penting di sini.

Inisialisasi() menjalankan dan membuat instance ClsArea Object di memori saat kita menggunakan dan membuat instance ClsVolume Class Objek dalam program Modul Standar kami.

Saat kita mengeksekusi Pernyataan Set ClsVolume =Nothing dalam program Modul Standar, untuk menghapus Objek ClsVolume dari memori, tombol Terminate() Sub-Rutin berjalan dan melepaskan ruang memori yang ditempati oleh Objek ClsArea.

Properti Dapatkan dblHeight Prosedur mengembalikan nilai dari p_Height Properti untuk Program panggilan.

Properti Biarkan dblHeight Prosedur memvalidasi nilai yang diteruskan ke NewValue parameter dan menetapkannya ke properti pribadi p_Height .

Volume Fungsi Publik() menghitung Volume, dengan memanggil p_Area.Area() Fungsi dan nilai area yang dikembalikan dikalikan dengan p_Height untuk menghitung Volume, dengan ekspresi:Volume =p_Area.Area * p_Height. Namun, sebelum menjalankan pernyataan ini, kami melakukan pemeriksaan validasi untuk memastikan bahwa fungsi p_Area.Area() mengembalikan nilai yang lebih besar dari nol, yang menunjukkan bahwa p_Area.dblLength, p_Area.dblWidth Properties memiliki nilai yang valid di dalamnya dan nilai properti p_Height lebih besar dari nol.

Catatan: Karena, p_Area Objek Kelas ClsArea didefinisikan sebagai Pribadi Property dari ClsVolume Class kita harus membuat Properties-nya (strDesc, dblLength, dblWidth dan Area() function) terlihat oleh dunia luar untuk Dapatkan/Biarkan Operasi dan untuk mengembalikan Nilai Area. Itu berarti kita harus mendefinisikan Get/Let Property Procedures untuk strDesc, dblLength, dblWidth Properties, dan fungsi Area() dari Objek Kelas ClsArea di Modul Kelas ClsVolume juga.

Prosedur Biarkan/Dapatkan Properti.

Tambahkan Properti berikut Dapatkan/Biarkan Prosedur dan Area() fungsi ke Kode Modul Kelas ClsVolume:

Public Property Get strDesc() As String
   strDesc = p_Area.strDesc
End Property

Public Property Let strDesc(ByVal NewValue As String)
   p_Area.strDesc = NewValue
End Property

Public Property Get dblLength() As Double
   dblLength = p_Area.dblLength
End Property

Public Property Let dblLength(ByVal NewValue As Double)
   p_Area.dblLength = NewValue
End Property

Public Property Get dblWidth() As Double
   dblWidth = p_Area.dblWidth
End Property

Public Property Let dblWidth(ByVal NewValue As Double)
   p_Area.dblWidth = NewValue
End Property

Public Function Area() As Double
    Area = p_Area.Area()
End Function

Periksa strDesc() Prosedur properti Get/Let baris Kode. Penggunaan nama Prosedur strDesc hanya masalah pilihan, jika Anda ingin menggunakan nama yang berbeda, silakan. Tapi, Nama Properti asli yang kami gunakan di Kelas ClsArea adalah strDesc. Menggunakan nama asli di sini mengingatkan kita pada hubungan dengan Objek Kelas ClsArea asli.

Dalam Prosedur Properti Dapatkan dblLength() berikutnya, ekspresi di sebelah kanan = tanda p_Area.dblLength membaca nilai dblLength yang disimpan dalam Objek Kelas ClsArea dan kembali ke program pemanggil.

Prosedur Biarkan Properti memberikan nilai parameter dalam variabel NewValue ke Properti p_Area.dblLength dari Objek Kelas ClsArea. Di sini, kami tidak menjalankan pemeriksaan validasi apa pun pada nilai yang diterima dalam variabel parameter NewValue. Pemeriksaan Validasi akan dilakukan di dalam Kelas ClsArea itu sendiri saat kami menetapkan nilai ke p_Area.dblLength properti.

Demikian pula, Prosedur Properti Get/Let ditambahkan untuk Properti p_Area.dblWidth juga,

Selanjutnya, p_Area.Area() Fungsi dibuat terlihat melalui Objek Kelas ClsVolume ke program pemanggil.

Kode Modul Kelas Turunan ClsVolume.

Kode lengkap Modul Kelas ClsVolume diberikan di bawah ini.

Option Compare Database
Option Explicit

Private p_Area As ClsArea
Private p_Height As Double

Private Sub Class_Initialize()

‘Open ClsArea Object in Memory with the name p_Area
    Set p_Area = New ClsArea 

End Sub

Private Sub Class_Terminate()

‘Removes the Object p_Area from Memory
    Set p_Area = Nothing ‘
End Sub

Public Property Get dblHeight() As Double
    dblHeight = p_Height
End Property

Public Property Let dblHeight(ByVal dblNewValue As Double)

Do While Val(Nz(dblNewValue, 0)) <= 0
      dblNewValue = InputBox("Negative/0 Values Invalid:", "dblHeight()", 0)
    Loop
     p_Height = dblNewValue

End Property

Public Function Volume() As Double

If (p_Area.Area() > 0) And (Me.dblHeight > 0) Then
    Volume = p_Area.Area * Me.dblHeight
Else    

MsgBox "Enter Valid Values for Length,Width and Height.",vbExclamation , "ClsVolume"
End If

End Function

‘ClsArea Class Property Procedures and Method are exposed here

Public Property Get strDesc() As String
   strDesc = p_Area.strDesc
End Property 

Public Property Let strDesc(ByVal NewValue As String)
   p_Area.strDesc = NewValue
End Property

Public Property Get dblLength() As Double
   dblLength = p_Area.dblLength
End Property

Public Property Let dblLength(ByVal NewValue As Double)
   p_Area.dblLength = NewValue
End Property

Public Property Get dblWidth() As Double
   dblWidth = p_Area.dblWidth
End Property

Public Property Let dblWidth(ByVal NewValue As Double)
   p_Area.dblWidth = NewValue
End Property

Public Function Area() As Double
    Area = p_Area.Area()
End Function

Saya tahu, apa yang Anda pikirkan sekarang:seperti "ini adalah pekerjaan ganda, itu bagus jika kita bisa, beberapa cara, lewati langkah-langkah mengulangi Prosedur Properti ClsArea lagi di Kelas ClsVolume ". Atau katakan, kita bisa menambahkan Properti dblWidth di ClsArea itu sendiri dan menjalankan metode Area() dan Volume() dari sana sendiri, bukan?

Intinya di sini adalah bagaimana Objek Kelas Dasar dapat menjadi bagian dari perancangan Objek Kelas lain.

Ingat, seluruh ide merancang Objek Modul Kelas yang Dapat Digunakan Kembali adalah bahwa program utama, menggunakan Objek Kelas, akan menjadi sederhana dan seluk-beluk yang dibangun ke dalam Objek Kelas tetap tersembunyi.

Ya, kita bisa melakukannya lebih dari satu cara, dengan kode yang ringkas juga. Kami akan menjelajahinya nanti, tetapi untuk saat ini, mari kita lanjutkan dengan rencana awal kita.

Program Utama yang Menggunakan Kelas ClsVolume.

Mari kita uji Kelas ClsVolume baru kita di Program utama di Modul Standar. Kode contoh diberikan di bawah ini.

Public Sub TestVolume()
Dim vol As ClsVolume

Set vol = New ClsVolume

vol.strDesc = "Warehouse"
vol.dblLength = 25
vol.dblWidth = 30
vol.dblHeight = 10

Debug.Print "Description", "Length", "Width", "Height", "Area", "Volume"

With vol
    Debug.Print .strDesc, .dblLength, .dblWidth, .dblHeight, .Area(), .Volume()
End With
End Sub

Anda dapat melihat betapa sederhananya program utama, tanpa garis cetak?

Salin dan Tempel kode ke dalam Modul Standar. Tekan Ctrl+G Keys untuk menampilkan Debug Window jika belum dalam keadaan terbuka. Klik di suatu tempat di tengah Kode dan tekan F5 Kunci untuk menjalankan Kode. Contoh keluaran pada Jendela Debug ditunjukkan di bawah ini.

Description   Length        Width         Height        Area          Volume
Warehouse      25            30            10            750           7500 

Keterangan Panjang Lebar Tinggi Luas Luas
Gudang 25 30 10 750 7500

Pemeriksaan Validasi Uji Kinerja.

Kami akan menjalankan tes untuk melihat bahwa pemeriksaan validasi nilai input Kelas ClsArea Kelas Dasar berfungsi ketika nilai-nilai diteruskan ke sana melalui Kelas ClsVolume. Kami telah melakukan beberapa pemeriksaan validasi di fungsi Area() dan Volume() juga.

Mari kita coba satu per satu:

Pertama, kita akan meneruskan nilai negatif ke properti ClsArea.dblLength melalui Kelas ClsVolume. Ini akan memicu pesan kesalahan dan membuka fungsi Inputbox() dalam Do While…Loop untuk memasukkan nilai yang benar.

1. Ganti Value 25, pada baris Vol.dblLength =25 , dengan –5 dan tekan F5 Kunci untuk menjalankan Kode.

Pemeriksaan validasi akan memicu kesalahan dan akan meminta nilai yang lebih besar dari Nol. Masukkan nilai lebih besar dari 0. Setelah itu kembalikan nilai 25 di baris, ganti –5.

2. Nonaktifkan baris Vol.dblHeight =10 dengan menyisipkan simbol komentar (‘) di awal baris seperti pada gambar:‘Vol.dblHeight =10 . Setelah perubahan tekan tombol F5 untuk menjalankan Kode.

Karena tidak ada nilai input yang diteruskan ke Properti, fungsi Vol.Volume() akan menghasilkan Kesalahan yang mengatakan bahwa ketiga Properti:dblLength, dblWidth, dan dblHeight, harus memiliki nilai di dalamnya untuk menjalankan fungsi Volume.

Demikian pula, Anda juga dapat memeriksa kinerja Fungsi Vol.Area().

Kita dapat membuat Fungsi pencetakan data dan meneruskan Objek ClsVolume sebagai parameter ke fungsi tersebut dan mencetak nilai di Jendela Debug.

Kode Program Utama yang Diubah.

Kode yang diubah untuk kedua Program diberikan di bawah ini:

Public Sub TestVolume()
Dim Vol As ClsVolume

Set Vol = New ClsVolume

Vol.strDesc = "Warehouse"
Vol.dblLength = 25
Vol.dblWidth = 30
Vol.dblHeight = 10

Call CVolPrint(Vol)

Set Vol = Nothing

End Sub
Public Sub CVolPrint(volm As ClsVolume)

   Debug.Print "Description", "Length", "Width", "Height", "Area", "Volume"  
With volm
    Debug.Print .strDesc, .dblLength, .dblWidth, .dblHeight, .Area, .Volume
End With

End Sub

Minggu depan kita akan membangun Objek Kelas Volume dengan Kode yang lebih sedikit.

Tautan Semua Halaman tentang Topik ini.

  1. Modul Kelas MS-Access dan VBA
  2. Array Objek Kelas VBA MS-Access
  3. Kelas Dasar MS-Access dan Objek Turunannya
  4. Kelas Dasar VBA dan Objek Turunan-2
  5. Varian Kelas Dasar dan Objek Turunan
  6. Set Rekaman Ms-Access dan Modul Kelas
  7. Mengakses Modul Kelas dan Kelas Pembungkus
  8. Transformasi Fungsionalitas Kelas Wrapper
  9. Dasar-dasar Ms-Access dan Objek Koleksi
  10. Modul Kelas Ms-Access dan Objek Koleksi
  11. Rekaman Tabel dalam Objek dan Formulir Koleksi
  12. Dasar-dasar Objek Kamus
  13. Dasar-Dasar Objek Kamus-2
  14. Mengurutkan Kunci Objek dan Item Kamus
  15. Menampilkan Rekaman dari Kamus ke Formulir
  16. Menambahkan Objek Kelas sebagai Item Kamus
  17. Memperbarui Item Kamus Objek Kelas pada Formulir


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 7 Basis Data Teratas

  2. Mengatasi Kesalahan Ketidakcocokan Arsitektur Saat Menggunakan Microsoft Access

  3. Cara Mendapatkan Fitur Terbaru di Office 365

  4. Berapa Banyak Pengguna yang Dapat Mengakses Dukungan?

  5. Cara Membuat Database Kosong di Access 2016