Access
 sql >> Baza danych >  >> RDS >> Access

Klasy bazowe i warianty obiektów pochodnych

Wprowadzenie.

W zeszłym tygodniu próbowaliśmy przekazać obiekt klasy bazowej przez Set Procedura właściwości, aby stać się częścią obiektu w pamięci. Przekazany obiekt staje się rozszerzeniem lub obiektem podrzędnym obiektu głównego w pamięci. W naszym poprzednim programie przekazywanie obiektu podrzędnego do obiektu docelowego odbywało się w fazie tworzenia instancji naszego programu testowego. W dalszej części programu przypisaliśmy wartości przekazanym właściwościom obiektu. Następny przykład jest nieco inny.

Dla tych, którzy chcieliby zapoznać się z wcześniejszymi artykułami na temat modułu klasy MS-Access, linki znajdują się poniżej:

  • Moduł klasy MS-Access i VBA
  • Tablice obiektów klasy MS-Access VBA
  • Klasa bazowa MS-Access i obiekty pochodne
  • Klasa podstawowa VBA i obiekt pochodny-2

Tym razem otworzymy oba obiekty (ClsArea – klasa bazowa, ClsVolume2 – klasa docelowa) osobno w naszym programie testowym. Przypisz wartości do właściwości ClsArea klasy bazowej, przed przekazaniem ich do obiektu klasy docelowej ClsVolume2. Pamiętaj, że klasa Volume2 ma tylko jedną własną właściwość, p_Height Właściwość i jej metoda Volume() potrzebuje Długości i Szerokość Wartości klasy bazowej ClsArea do obliczenia objętości.

  1. Skopiuj i wklej następujący przykładowy kod testu do modułu standardowego.

    Procedura 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
    

    Przegląd kodu VBA.

    W pierwszym przyciemnionym oświadczenie, CA jest zdefiniowany jako obiekt ClsArea i Vol jako obiekt ClsVolume2. Następne dwie instrukcje tworzą instancję obu obiektów w pamięci.

    Następne trzy instrukcje przypisują wartości do właściwości obiektu klasy ClsArea.

    Przystanek Instrukcja powoduje przerwę w wykonywaniu kodu, dzięki czemu możemy zweryfikować wartości właściwości obiektu w oknie Locals.

    Ustaw Vol.CArea =CA instrukcja przypisuje urząd certyfikacji obiektu klasy ClsArea jako obiekt podrzędny do Vol (ClsVolume2) Obiekt.

    W następnym kroku dblHeight Właściwość obiektu klasy ClsVolume2 ma przypisaną wartość 10.

    Następne instrukcje przed instrukcją Stop wyświetlają wartości z pamięci do okna debugowania.

    Następne dwa zestaw Polecenia usuwają obiekty z pamięci przed zakończeniem programu.

    Wyświetl okno lokalne.

  2. Wybierz Okno Lokalne Opcja z menu Widok.
  3. Kliknij gdzieś w środku kodu i naciśnij F5 uruchomić kod, aż program zatrzyma się na Stopie oświadczenie. Możesz też nacisnąć F8 aby uruchomić kod krok po kroku, aby sprawdzić okno Locals pod kątem zmian, na każdym kroku.
  4. Kliknij [+] Symbol do rozwijania i wyświetlania właściwości i wartości obiektów.
  5. Sprawdź Carea i p_Area Odwołanie do obiektu w Wartości kolumna Tom Obiekt. Wartość tam jest wyświetlana jako Nic ponieważ nie przekazaliśmy jeszcze obiektu CA do obiektu Vol.
  6. Jeśli zakończyłeś przeglądanie zawartości okna Locals, uruchom kod do następnego Zatrzymania oświadczenie. Teraz Crea Uzyskaj procedurę dotyczącą własności i p_Area Obiekt jest przypisany do obiektu klasy ClsArea.

Wypróbujemy inny przykład wariantu obu tych dwóch klas ClsArea i ClsVolume2.

Nowy moduł klasy ClsVolume3.

1. Wstaw nowy moduł klasy i zmień jego nazwę Wartość właściwości na ClsVolume3 .

2. Skopiuj i wklej następujący kod VBA do modułu klasy 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

Sprawdź kod od początku:p_Height zgłoszone jako własność prywatna. p_Area Właściwość klasy ClsVolume3 zadeklarowana jako Publiczna Obiekt ClsArea. Oznacza to p_Area pojawi się jako Właściwość klasy ClsVolume3 z własnymi wyświetlanymi właściwościami dla bezpośredniego Pobierz/Pozwól operacje w Programie Użytkownika w Module Standard. Mimo że obiekt klasy ClsArea został zadeklarowany jako właściwość publiczna klasy ClsVolume3, jego właściwości są hermetyzowane w samej klasie ClsArea.

Sprawdź Class_Initialize() i Class_Terminate() Podprogramy. Obiekt ClsArea jest tworzony w kodzie Class_Initialize() i usuwa obiekt z pamięci w kodzie Class_Terminate() po zakończeniu programu użytkownika.

Program testowania.

Przykładowy testowy kod VBA podano poniżej.

Skopiuj i wklej kod do modułu standardowego.

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

Wyświetl okno Locals (Widok -> Okno Locals), jeśli nie jest jeszcze otwarte.

Kliknij gdzieś w środku kodu i naciśnij F8 aby wykonać kod VBA po jednej linii na raz i obserwować okno lokalne, aby śledzić, co dzieje się na każdym kroku.

Wszystkie powyższe warianty klasy ClsVolume zostały napisane z mniejszą ilością kodu, z wyjątkiem pierwszego przykładu klasy ClsVolume.

Praca z obiektem Recordset.

W przyszłym tygodniu będziemy pracować z wbudowanym obiektem DAO.Recordset i zbuduj moduł klasy do:

  1. Oblicz i zaktualizuj pole,
  2. Sortuj dane,
  3. Drukuj posortowane dane do okna debugowania,
  4. i utwórz klon tabeli z posortowanymi danymi.

To dużo akcji w przyszłym tygodniu.

Lista wszystkich linków na ten temat.

  1. Moduł klasy MS-Access i VBA
  2. Tablice obiektów klasy MS-Access VBA
  3. Klasa bazowa MS-Access i obiekty pochodne
  4. Klasa podstawowa VBA i obiekty pochodne-2
  5. Warianty klasy bazowej i obiektów pochodnych
  6. Ms-Access Recordset and Class Module
  7. Dostęp do modułu klas i klas opakowujących
  8. Transformacja funkcjonalności klasy opakowującej
  9. Podstawy dostępu do MS i obiektów kolekcji
  10. Moduł klasy Ms-Access i obiekt kolekcji
  11. Rekordy tabeli w obiekcie i formularzu kolekcji
  12. Podstawy obiektów słownikowych
  13. Podstawy obiektów słownika-2
  14. Sortowanie kluczy obiektów i elementów słownika
  15. Wyświetl rekordy ze słownika do formularza
  16. Dodaj obiekty klasy jako elementy słownika
  17. Aktualizuj element słownika obiektów klasy w formularzu


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Skąd pobrać zestaw Runtime Kit dla Microsoft Access 2016

  2. 7 dobrych nawyków technologicznych, które powinni przyjąć wszyscy pracodawcy

  3. Pole tekstowe lub numeryczne — prosta metoda SQL do zmiany typu danych

  4. Jak poruszać się po otwierającym obszarze roboczym programu Access 2019

  5. ROZWIĄZANE:Microsoft Office 365 w wersji 2009 może uszkodzić aplikację bazy danych