sql >> Database teknologi >  >> RDS >> Access

Basisklasse og afledte objektvarianter

Introduktion.

I sidste uge har vi prøvet et eksempel på at sende et basisklasseobjekt gennem sættet Egenskabsprocedure, for at blive en del af objektet i hukommelsen. Det beståede objekt bliver en udvidelse eller et underordnet objekt af hovedobjektet i hukommelsen. I vores tidligere program blev overførsel af det underordnede objekt til målobjektet udført i instansieringsfasen af ​​vores testprogram. Vi har tildelt værdier til de beståede objektegenskaber i den senere del af programmet. Det næste eksempel er lidt anderledes.

For dem, der gerne vil gennemgå de tidligere artikler om MS-Access Class Module, er linkene nedenfor:

  • MS-Access Class Module og VBA
  • MS-Access VBA Class Object Arrays
  • MS-Access Basisklasse og afledte objekter
  • VBA-basisklasse og afledt objekt-2

Denne gang åbner vi begge objekter (ClsArea – basisklassen, ClsVolume2 – målklassen) separat i vores testprogram. Tildel værdier til Base Class ClsArea-egenskaberne, før de overføres til målklasse ClsVolume2-objektet. Husk, at Volume2-klassen kun har én egen egenskab, p_Height Ejendom og dens metode Volume() har brug for længden og Bredde Værdier for basisklassen ClsArea til beregning af volumen.

  1. Kopiér og indsæt følgende prøveprøvekode i et 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-kodegennemgang.

    I den første Dim erklæring, CA er defineret som ClsArea Object og Vol som ClsVolume2-objekt. De næste to udsagn instansierer begge objekter i hukommelsen.

    De næste tre sætninger tildeler værdier til egenskaberne for ClsArea Class Object.

    Stop sætningen giver en pause i kodeudførelsen, så vi kan verificere objektegenskabsværdierne i Locals-vinduet.

    Set Vol.CArea =CA sætningen tildeler ClsArea Class Object CA, som et underordnet objekt til Vol (ClsVolume2) Objekt.

    I det næste trin dblHeight Egenskaben for ClsVolume2 Class Object er tildelt værdien 10.

    De næste sætninger før Stop-sætningen udskriver værdierne fra hukommelsen til fejlfindingsvinduet.

    De næste to Sæt Statements fjerner objekterne fra hukommelsen, før programmet afsluttes.

    Vis Locals-vinduet.

  2. Vælg Locals Window Indstilling fra menuen Vis.
  3. Klik et sted i midten af ​​koden, og tryk på F5 for at køre koden, indtil programmet stopper ved Stop udmelding. Alternativt kan du trykke på F8 at køre koden et trin ad gangen for at inspicere Locals-vinduet for ændringer, ved hvert trin.
  4. Klik på [+] Symbol for at udvide og vise både objektegenskaber og værdier.
  5. Tjek Carea og p_Area Objektreference i Værdi kolonne i Vol Objekt. Værdien derinde vises som Intet fordi vi endnu ikke har videregivet CA Object til Vol Object.
  6. Hvis du er færdig med at se indholdet i Locals Window, så kør koden til næste stop udmelding. Nu, Carea Få ejendomsprocedure og p_Area Objekter tildeles med ClsArea-klasseobjektet.

Vi vil prøve et andet varianteksempel af begge disse to klasser ClsArea og ClsVolume2.

Nyt klassemodul ClsVolume3.

1. Indsæt et nyt klassemodul, og skift dets navn Egenskabsværdi til ClsVolume3 .

2. Kopiér og indsæt følgende VBA-kode 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

Tjek koden fra begyndelsen:p_Height erklæret som privat ejendom. p_Area Ejendom for ClsVolume3 Class erklæret som Offentlig ClsArea-objekt. Det betyder p_Area vises som en egenskab for ClsVolume3-klassen med sine egne egenskaber, der kan vises til direkte Get/Let operationer i brugerprogrammet i standardmodulet. Selvom ClsArea Class Object er blevet erklæret som offentlig ejendom af ClsVolume3 Class, er dets egenskaber indkapslet i selve ClsArea Class.

Tjek Class_Initialize() og Class_Terminate() Underrutiner. ClsArea-objektet instansieres i Class_Initialize()-koden og fjerner objektet fra hukommelsen i Class_Terminate()-koden, når brugerprogrammet slutter.

Testprogrammet.

Eksempel på Test VBA-koden er givet nedenfor.

Kopiér og indsæt koden i standardmodulet.

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

Vis Locals-vinduet (View - -> Locals-vinduet), hvis det ikke allerede er åbent.

Klik et sted i midten af ​​koden, og tryk på F8 for at udføre VBA-koden en linje ad gangen og se det lokale vindue for at spore, hvad der sker ved hvert trin.

Alle ovennævnte varianter af ClsVolume Class er blevet skrevet med mindre kode, undtagen det første eksempel på ClsVolume Class.

Arbejde med Recordset-objektet.

I næste uge vil vi arbejde med et indbygget Object DAO.Recordset og byg et klassemodul til:

  1. Beregn og opdater et felt,
  2. Sortér dataene,
  3. Udskriv de sorterede data i fejlfindingsvinduet,
  4. og opret en klon af tabellen med sorterede data.

Det er en masse action i næste uge.

Liste over alle links om dette emne.

  1. MS-Access Class Module og VBA
  2. MS-Access VBA Class Object Arrays
  3. MS-Access Basisklasse og afledte objekter
  4. VBA-basisklasse og afledte objekter-2
  5. Basisklasse og afledte objektvarianter
  6. Ms-Access Recordset og klassemodul
  7. Adgang til klassemodul- og indpakningsklasser
  8. Wrapper Class Funktionalitet Transformation
  9. Grundlæggende om Ms-Access og Collection Object
  10. Ms-Access klassemodul og samlingsobjekt
  11. Tabelposter i samlingsobjekt og -form
  12. Grundlæggende om ordbogsobjekt
  13. Dictionary Object Basics-2
  14. Sortering af ordbogsobjektnøgler og -elementer
  15. Vis poster fra ordbog til formular
  16. Tilføj klasseobjekter som ordbogselementer
  17. Opdater Class Object Dictionary Element på formular


  1. 5 grunde til, hvorfor du har brug for en god database

  2. Oprettelse af en webapp fra bunden ved hjælp af Python Flask og MySQL:Del 4

  3. Sådan vælger du alle kolonner og et antal(*) i den samme forespørgsel

  4. ved hjælp af (-) bindestreg i mysql tabelnavn