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

Akses Modul Kelas dan Kelas Pembungkus

Pengantar.

Ada kalanya Modul Kelas tertentu perlu dipakai lebih dari sekali, untuk menggunakan kumpulan nilai yang serupa untuk Aplikasi tertentu.

Misalnya Modul Kelas ClsArea kami, kami telah merancang untuk menghitung luas karpet Kamar adalah kandidat untuk aplikasi serupa. Asumsikan bahwa kita ingin mengetahui berapa banyak ubin lantai yang kita butuhkan untuk diletakkan di sebuah ruangan maka kita harus dapat memasukkan nilai Panjang dan Lebar Ubin juga, selain nilai dimensi Lantai. Karena, Lantai dan Ubin memiliki nilai Properti yang sama sebagai input, kita dapat menggunakan dua instance Modul Kelas ClsArea, satu instance untuk area FLOOR dan instance kedua untuk area TILE. Floor-Area / Tile-Area memberikan jumlah total ubin untuk ruangan tertentu.

Dua Instance dari Modul Kelas yang sama.

Kita dapat melakukan ini dengan membuat dua contoh berbeda dari Modul Kelas ClsArea dalam Program Modul Standar jika hanya ada satu Ruangan.

Public Sub FloorTiles()
Dim FLOOR As ClsArea
Dim TILES As ClsArea
Dim flrArea As Double, tilearea As Double
Dim lngTiles As Long

Set FLOOR = New ClsArea
Set TILES = New ClsArea

FLOOR.strDesc = "Bed Room1"
FLOOR.dblLength = 25
FLOOR.dblWidth = 15
flrArea = FLOOR.Area()

TILES.strDesc = "Off-White"
TILES.dblLength = 2.5
TILES.dblWidth = 1.25
tilearea = TILES.Area()

lngTiles = flrArea / tilearea

Debug.Print FLOOR.strDesc & " Required Tiles: " & lngTiles & " Numbers - Color: " & TILES.strDesc

Set FLOOR = Nothing
Set TILES = Nothing

End Sub

Menangani Array Objek.

Namun, bagaimana jika kita perlu menerapkan cara di atas untuk susunan beberapa ruangan dengan ukuran atau warna ubin yang berbeda? Jawabannya adalah membuat Modul Kelas baru dengan dua instance ClsArea yang sama Kelas, satu contoh untuk Lantai, dan yang lainnya untuk Ubin Properti. Kedua instance dibungkus dalam Modul Kelas baru.

Mari kita lakukan itu.

  1. Buka Database Anda dan tampilkan Jendela Pengeditan Kode (ALT+F11).
  2. Pilih Modul Kelas dari Sisipkan Menu.
  3. Ubah Nama Nilai properti untuk ClsTiles .
  4. Salin dan Tempel Kode VBA berikut ke dalam Modul Kelas ClsTiles dan simpan Kode:
    Option Compare Database
    Option Explicit
    
    Private pFLOOR As ClsArea
    Private pTILES As ClsArea
    
    Private Sub Class_Initialize()
        Set pFLOOR = New ClsArea
        Set pTILES = New ClsArea
    End Sub
    
    Private Sub Class_Terminate()
        Set pFLOOR = Nothing
        Set pTILES = Nothing
    End Sub
    
    Public Property Get Floor() As ClsArea
     Set Floor = pFLOOR
    End Property
    
    Public Property Set Floor(ByRef NewValue As ClsArea)
      Set pFLOOR = NewValue
    End Property
    
    Public Property Get Tiles() As ClsArea
      Set Tiles = pTILES
    End Property
    
    Public Property Set Tiles(ByRef NewValue As ClsArea)
      Set pTILES = NewValue
    End Property
    
    Public Function NoOfTiles() As Long
       NoOfTiles = pFLOOR.Area() / pTILES.Area()
    End Function
    

    Kedua instance, pFLOOR, dan pTILES dideklarasikan sebagai Private Properties dari ClsTiles Class Object.

    Class_Initialize() Subrutin membuat instance kedua objek dalam memori saat ClsTiles Modul Kelas dibuat dalam program pengguna.

    Kelas_Terminasi() subrutin menghapus kedua instans (pFLOOR dan pTILES) dari memori ketika instans Modul Kelas ClsTiles disetel ke Tidak Ada di program pengguna.

    Dapatkan dan Setel Prosedur Properti memungkinkan pengambilan dan penetapan nilai, masing-masing dari dan ke instance pFLOOR, di Objek Kelas ClsTiles.

    Prosedur Get and Set Property berikutnya memungkinkan operasi yang sama dalam instance pTILES dari Kelas ClsArea.

    Kami telah menambahkan fungsi baru NoOfTiles() di Modul Kelas baru, untuk menghitung jumlah ubin, berdasarkan dimensi Luas Lantai dan Ubin.

    Mari kita menulis Program dan mempelajari penggunaan beberapa instance dari Objek Kelas yang sama, dalam Modul Kelas baru:ClsTiles.

  5. Salin dan tempel Kode VBA berikut ke dalam Modul Standar:
    Public Sub TilesCalc()
    Dim FTiles As ClsTiles
    Dim TotalTiles As Long
    
    Set FTiles = New ClsTiles
    
    FTiles.Floor.strDesc = "Warehouse"
    FTiles.Floor.dblLength = 100
    FTiles.Floor.dblWidth = 50
    
    FTiles.Tiles.dblLength = 2.5
    FTiles.Tiles.dblWidth = 1.75
    
    TotalTiles = FTiles.NoOfTiles()
    
    Debug.Print "Site Name", "Floor Area", "Tile Area", "No. of Tiles"
    Debug.Print FTiles.Floor.strDesc, FTiles.Floor.Area, FTiles.Tiles.Area, TotalTiles
    
    End Sub
     
  6. Biarkan Jendela Debug Terbuka (CTRL+G) untuk mencetak data pengujian.
  7. Klik di suatu tempat di tengah Kode VBA dan Tekan F5 Kunci untuk menjalankan Kode. Hasilnya dicetak pada Jendela Debug.

    Jika Anda ingin menghitung kebutuhan ubin beberapa ruangan atau ruangan beberapa lantai sebuah gedung bertingkat maka Anda harus menjalankan program di atas beberapa kali dan mencatat nilainya, yang praktis sangat sulit.

    Menemukan Kebutuhan Ubin Beberapa Ruangan.

    Sekarang, mari kita tulis program lain untuk menemukan persyaratan Tile dari beberapa Ruangan, dengan Array ClsTiles Objek dengan memasukkan nilai Properti langsung dari keyboard.

  8. Salin dan Tempel Kode VBA berikut ke dalam Modul Standar.
    Public Sub TilesCalc2()
    Dim tmpFT As ClsTiles
    Dim FTiles() As ClsTiles
    Dim j As Long, L As Long, H As Long
    
    For j = 1 To 3
       Set tmpFT = New ClsTiles
          'Floor dimension
        With tmpFT.Floor
          .strDesc = InputBox(Str(j) & ") Floor Desc", , 0)
          .dblLength = InputBox(Str(j) & ") Floor Length", , 0)
          .dblWidth = InputBox(Str(j) & ") Floor Width", , 0)
        End With
        
        'Tile Dimension
        With tmpFT.Tiles
          .strDesc = InputBox(Str(j) & ") Tiles Desc", , 0)
          .dblLength = InputBox(Str(j) & ") Tile Length", , 0)
          .dblWidth = InputBox(Str(j) & ") Tile Width", , 0)
        End With
       
       ReDim Preserve FTiles(1 To j) As ClsTiles
       Set FTiles(j) = tmpFT
       
       Set tmpFT = Nothing
    Next
    
    'Take Printout
    L = LBound(FTiles)
    H = UBound(FTiles)
    
    Debug.Print "FLOOR", "Floor Area", "TILES", "Tile Area", "Total Tiles"
    For j = L To H
      With FTiles(j)
       Debug.Print .Floor.strDesc, .Floor.Area(), .Tiles.strDesc, .Tiles.Area(), .NoOfTiles
      End With
    Next
       
    'Remove all objects from memory
    For j = L To H
       Set FTiles(j) = Nothing
    Next
      
    End Sub
    
    
  9. Biarkan Jendela Debug tetap terbuka untuk mencetak output di sana.
  10. Jalankan Kode seperti sebelumnya dan masukkan nilai untuk dimensi Lantai dan Ubin untuk tiga Ruangan.

Seperti yang dapat Anda lihat dari kode di atas bahwa kedua nilai dimensi Room dan Tile masuk ke instance Class Object Array yang sama, berdampingan.

Program di atas adalah demo yang berjalan hanya untuk tiga set nilai dalam For. . . putaran berikutnya. Itu dapat dimodifikasi dengan loop bersyarat yang berjalan beberapa kali hingga kode pemutusan bersyarat menghentikan program.

Program dapat dimodifikasi untuk menyimpan setiap set nilai data dan hasil perhitungan dalam Tabel untuk referensi di masa mendatang.

Kelas Pembungkus adalah Wadah Kelas untuk instance dari Kelas lain, Struktur Data, atau kumpulan instance objek lain. Di sini kita telah menggunakannya untuk menampung dua instance dari Object kelas yang sama.

Daftar Semua Tautan pada 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. Menambahkan Objek Kelas sebagai Item Kamus
  18. 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. Mengatur Izin Akses Basis Data

  2. Penanganan Kesalahan Tingkat Lulusan

  3. 10 Pintasan Microsoft Access yang Berguna Saat Anda Bekerja dengan Kontrol pada Formulir dan Laporan

  4. Akses ODBC dari Windows Server Core

  5. 5 Jenis Perbaikan Basis Data