sql >> Databáze >  >> RDS >> Access

Základní třída a varianty odvozených objektů

Úvod.

Minulý týden jsme vyzkoušeli příklad pro předání objektu základní třídy prostřednictvím Set Vlastnost Postup, aby se stal součástí objektu v paměti. Předaný objekt se stane rozšířením nebo podřízeným objektem hlavního objektu v paměti. V našem dřívějším programu bylo předání podřízeného objektu cílovému objektu provedeno ve fázi vytváření instance našeho testovacího programu. V pozdější části programu jsme přiřadili hodnoty předaným vlastnostem objektu. Následující příklad je mírně odlišný.

Pro ty, kteří by si chtěli projít předchozí články o modulu MS-Access Class Module, jsou uvedeny níže:

  • MS-Access Class Module a VBA
  • Pole objektů třídy VBA MS Access
  • Základní třída MS-Access a odvozené objekty
  • Základní třída VBA a odvozený objekt-2

Tentokrát otevřeme oba Objekty (ClsArea – základní třída, ClsVolume2 – cílová třída) samostatně v našem testovacím programu. Před jejich předáním do cílového objektu třídy ClsVolume2 přiřaďte hodnoty do vlastností základní třídy ClsArea. Pamatujte, že třída Volume2 má pouze jednu vlastní vlastnost, p_Height Vlastnost a její metoda Volume() potřebuje Délku a Šířka Hodnoty základní třídy ClsArea pro výpočet objemu.

  1. Zkopírujte a vložte následující ukázkový testovací kód do standardního modulu.

    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
    

    Recenze kódu VBA.

    V prvním Ztlumit výpis, CA je definován jako ClsArea Object a Vol jako objekt ClsVolume2. Následující dva příkazy vytvoří instanci obou objektů v paměti.

    Následující tři příkazy přiřazují hodnoty vlastnostem objektu třídy ClsArea.

    Zastavit příkaz pozastaví provádění kódu, abychom mohli ověřit hodnoty vlastností objektu v okně Locals.

    Nastavit Vol.CArea =CA příkaz přiřadí CA objektu třídy ClsArea jako podřízený objekt do Vol (ClsVolume2) Objekt.

    V dalším kroku dblHeight Vlastnost objektu třídy ClsVolume2 je přiřazena s hodnotou 10.

    Další příkazy před příkazem Stop vytisknou hodnoty z paměti do okna Debug.

    Další dvě Nastavit Příkazy odstraní objekty z paměti před ukončením programu.

    Zobrazte okno Locals.

  2. Vyberte Okno Místní Možnost z nabídky Zobrazit.
  3. Klikněte někam doprostřed kódu a stiskněte F5 pro spuštění kódu, dokud se program nezastaví na Stop prohlášení. Případně můžete stisknout F8 spouštět kód krok po kroku a zkontrolovat změny v okně Locals v každém kroku.
  4. Klikněte na [+] Symbol pro rozbalení a zobrazení jak vlastností objektů, tak hodnot.
  5. Zkontrolujte oblast CA a p_Area Odkaz na objekt v části Hodnota sloupec Svazek Objekt. Hodnota v něm se zobrazuje jako Nic protože jsme ještě nepředali objekt CA objektu Vol.
  6. Pokud jste dokončili prohlížení obsahu okna Locals, spusťte kód do příštího Stop prohlášení. Nyní CArea Získejte proceduru vlastnictví a p_Area Objektu je přiřazen objekt třídy ClsArea.

Vyzkoušíme další příklad varianty obou těchto dvou tříd ClsArea a ClsVolume2.

Nový modul třídy ClsVolume3.

1. Vložte nový modul třídy a změňte jeho název Hodnota vlastnosti na ClsVolume3 .

2. Zkopírujte a vložte následující kód VBA do modulu třídy 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

Zkontrolujte kód od začátku:p_Height prohlášena za soukromý majetek. p_Area Vlastnost třídy ClsVolume3 deklarovaná jako Veřejná Objekt ClsArea. To znamená p_Area se zobrazí jako vlastnost třídy ClsVolume3 s vlastními zobrazitelnými vlastnostmi pro přímé Get/Let operace v uživatelském programu ve standardním modulu. Přestože byl objekt třídy ClsArea deklarován jako veřejný majetek třídy ClsVolume3, jeho vlastnosti jsou zapouzdřeny v samotné třídě ClsArea.

Zkontrolujte Class_Initialize() a Class_Terminate() Podprogramy. Objekt ClsArea je vytvořen v kódu Class_Initialize() a odebere objekt z paměti v kódu Class_Terminate() po ukončení uživatelského programu.

Program testování.

Ukázkový testovací kód VBA je uveden níže.

Zkopírujte a vložte kód do standardního modulu.

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

Zobrazte okno Locals (View - -> Locals Window), pokud již není otevřené.

Klikněte někam doprostřed kódu a stiskněte F8 spustit kód VBA jeden řádek po druhém a sledovat místní okno, abyste mohli sledovat, co se děje v každém kroku.

Všechny výše uvedené varianty třídy ClsVolume byly napsány s méně kódem, kromě prvního příkladu třídy ClsVolume.

Práce s objektem Recordset.

Příští týden budeme pracovat s vestavěným Object DAO.Recordset a vytvořte modul třídy komu:

  1. Vypočítat a aktualizovat pole,
  2. Seřadit data,
  3. Vytiskněte seřazená data do okna ladění,
  4. a Vytvořte klon tabulky s seřazenými daty.

Příští týden bude hodně akce.

Seznam všech odkazů na toto téma.

  1. MS-Access Class Module a VBA
  2. Pole objektů třídy VBA MS Access
  3. Základní třída MS-Access a odvozené objekty
  4. Základní třída VBA a odvozené objekty-2
  5. Základní třída a varianty odvozených objektů
  6. Sada záznamů a modul třídy Ms-Access
  7. Přístup k modulu třídy a třídám Wrapper
  8. Transformace funkčnosti třídy Wrapper
  9. Základy přístupu a shromažďovacích objektů
  10. Modul třídy Ms-Access a objekt kolekce
  11. Záznamy tabulek v objektu a formuláři kolekce
  12. Základy objektů slovníku
  13. Základy objektů slovníku-2
  14. Řazení klíčů a položek objektů slovníku
  15. Zobrazení záznamů ze slovníku do formuláře
  16. Přidat objekty třídy jako položky slovníku
  17. Aktualizovat položku slovníku objektů třídy ve formuláři


  1. Automatizujte úlohy zálohování a údržby pomocí plánu údržby na serveru SQL Server

  2. Je možné spustit více příkazů DDL v rámci transakce (v rámci SQL Server)?

  3. Vynutit omezení cizího klíče na sloupce stejné tabulky

  4. Přepište Query Optimizer pro vaše spojení T-SQL pomocí FORCEPLAN