sql >> Databasteknik >  >> RDS >> Access

Basklass och härledda objektvarianter

Introduktion.

Förra veckan har vi provat ett exempel för att skicka ett basklassobjekt genom uppsättningen Egenskapsprocedur, för att bli en del av objektet i minnet. Det skickade objektet blir ett tillägg eller underordnat objekt till huvudobjektet i minnet. I vårt tidigare program gjordes överföringen av det underordnade objektet till målobjektet i instansieringsfasen av vårt testprogram. Vi har tilldelat värden till de godkända objektegenskaperna i den senare delen av programmet. Nästa exempel är något annorlunda.

För dem som vill gå igenom de tidigare artiklarna om MS-Access Class Module finns länkarna nedan:

  • MS-Access Class Module och VBA
  • MS-Access VBA Class Object Arrays
  • MS-Access basklass och härledda objekt
  • VBA Base Class and Derived Object-2

Den här gången kommer vi att öppna båda objekten (ClsArea – basklassen, ClsVolume2 – målklassen) separat i vårt testprogram. Tilldela värden till Base Class ClsArea-egenskaperna innan du skickar dem till målklass ClsVolume2-objektet. Kom ihåg att klassen Volume2 bara har en egen egenskap, p_Height Egenskap och dess metod Volume() behöver Längden och Bredd Värden för basklassen ClsArea för att beräkna volym.

  1. Kopiera och klistra in följande provtestkod i en standardmodul.

    SetNewVol2_2-proceduren.

    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
    

    VBA-kodgranskning.

    I den första Dim uttalande, CA definieras som ClsArea Object och Vol som ClsVolume2 Object. De följande två satserna instansierar båda objekten i minnet.

    De följande tre satserna tilldelar värden till egenskaperna för ClsArea Class Object.

    Stopp -satsen ger en paus i kodexekveringen så att vi kan verifiera objektegenskapsvärdena i Locals-fönstret.

    Set Vol.CArea =CA satsen tilldelar ClsArea Class Object CA, som ett underordnat objekt till Vol (ClsVolume2) Objekt.

    I nästa steg dblHeight Egenskapen för ClsVolume2 Class Object tilldelas värdet 10.

    Nästa satser före Stop-satsen skriver ut värdena från minnet till felsökningsfönstret.

    De nästa två Set Statements tar bort objekten från minnet innan programmet avslutas.

    Visa lokalbefolkningsfönstret.

  2. Välj Lokalfönster Alternativ från menyn Visa.
  3. Klicka någonstans i mitten av koden och tryck på F5 för att köra koden tills programmet pausar vid Stopp påstående. Alternativt kan du trycka på F8 för att köra koden ett steg i taget för att inspektera Locals-fönstret för ändringar, vid varje steg.
  4. Klicka på [+] Symbol för att expandera och visa både objektegenskaper och värden.
  5. Kontrollera Carea och p_Area Objektreferens i Värde kolumnen i Vol Objekt. Värdet där visas som Ingenting eftersom vi ännu inte har skickat CA Object till Vol Object.
  6. Om du har tittat klart innehållet i Locals Window kör du koden till nästa stopp påstående. Nu, Carea Skaffa Property Procedur och p_Area Objekt tilldelas med ClsArea Class Object.

Vi kommer att prova ett annat variantexempel av båda dessa två klasser ClsArea och ClsVolume2.

Ny klassmodul ClsVolume3.

1. Infoga en ny klassmodul och ändra dess namn Property Value till ClsVolume3 .

2. Kopiera och klistra in följande VBA-kod i ClsVolume3 Class Module:

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

Kontrollera koden från början:p_Height förklaras som enskild egendom. p_Area Egenskapen för klassen ClsVolume3 har deklarerats som offentlig ClsArea-objekt. Det betyder p_Area kommer att visas som en egenskap för klassen ClsVolume3 med sina egna visningsbara egenskaper för direkt Get/Let operationer i användarprogrammet i standardmodulen. Även om ClsArea Class Object har deklarerats som allmän egendom för ClsVolume3 Class, är dess egenskaper inkapslade i själva ClsArea Class.

Kontrollera Class_Initialize() och Class_Terminate() Underrutiner. ClsArea-objektet instansieras i Class_Initialize()-koden och tar bort objektet från minnet i Class_Terminate()-koden när användarprogrammet avslutas.

Testprogrammet.

Exempel på Test VBA-koden ges nedan.

Kopiera och klistra in koden i standardmodulen.

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

Visa Locals-fönstret (Visa - -> Locals-fönstret), om det inte redan är öppet.

Klicka någonstans i mitten av koden och tryck på F8 att exekvera VBA-koden en rad i taget och titta på det lokala fönstret för att spåra vad som händer vid varje steg.

Alla ovanstående varianter av ClsVolume Class har skrivits med mindre kod, förutom det första exemplet av ClsVolume Class.

Arbeta med postuppsättningsobjektet.

Nästa vecka kommer vi att arbeta med en inbyggd Object DAO.Recordset och bygg en klassmodul till:

  1. Beräkna och uppdatera ett fält,
  2. Sortera data,
  3. Skriv ut den sorterade datan i felsökningsfönstret,
  4. och skapa en klon av tabellen med sorterade data.

Det är mycket action nästa vecka.

Lista över alla länkar om detta ämne.

  1. MS-Access Class Module och VBA
  2. MS-Access VBA Class Object Arrays
  3. MS-Access basklass och härledda objekt
  4. VBA-basklass och härledda objekt-2
  5. Basklass- och härledda objektvarianter
  6. Ms-Access Recordset och Class Module
  7. Åtkomst till klassmoduler och omslagsklasser
  8. Omvandling av omslagsklassfunktionalitet
  9. Ms-Access och Collection Object Basics
  10. Ms-Access Class Module och Collection Object
  11. Tabellposter i samlingsobjekt och form
  12. Grundläggande om ordbokobjekt
  13. Dictionary Object Basics-2
  14. Sortera ordboksobjektnycklar och objekt
  15. Visa poster från ordbok till formulär
  16. Lägg till klassobjekt som ordboksobjekt
  17. Uppdatera Class Object Dictionary-objekt på formulär


  1. ClusterControl - Advanced Backup Management - mariabackup del III

  2. Oracle SQL:Hur man använder mer än 1000 objekt i en IN-klausul

  3. PostgreSQL:Ta bort attribut från JSON-kolumnen

  4. Priset för att inte rensa