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

Základní třída VBA a odvozený objekt-2

Úvod.

Minulý týden jsme vytvořili objekt odvozené třídy ClsVolume s použitím třídy ClsArea jako základní třídy. Vytvořili jsme procedury vlastností v odvozené třídě, abychom vystavili vlastnosti a funkce základní třídy uživatelským programům Object. Tato metoda vyžaduje opakování všech procedur vlastností základní třídy také v odvozené třídě. Zde prozkoumáme, jak vytvořit stejnou odvozenou třídu ClsVolume bez opakování procedur vlastností základní třídy ClsArea.

Naučili jsme se používat Získat a Nech Vlastnické procedury ve třídách. Ve třídách se používá ještě jedna procedura vlastností:Sada Vlastnické řízení. Procedura Set Property Procedure přímo přiřadí objekt objektu třídy stejného typu.

Než budete pokračovat dále, můžete navštívit dřívější stránky na toto téma, pokud jste tak ještě neučinili, níže jsou uvedeny odkazy:

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

ClsVolume Class, Makeover.

Vytvoříme jinou variantu stejného modulu třídy ClsVolume, který jsme vytvořili minulý týden, s použitím ClsArea jako základní třídy, s jiným přístupem as menším množstvím kódu.

Vytvořte nový modul třídy a změňte jeho hodnotu vlastnosti Name na ClsVolume2 .

Zkopírujte a vložte následující kód do modulu třídy ClsVolume2 a modul uložte:

Option Compare Database
Option Explicit
'Method two-1
Private p_Height As Double
Private 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 * p_Height
End Function

„Nové Získat a Nastavit Procedura vlastnosti pro ClsArea ObjectsPublic Property Get CArea() As ClsArea Set CArea =p_AreaEnd PropertyPublic Property Set CArea(ByRef AreaValue As ClsArea) Set p_Area =AreaValueEnd Property

Vyberte možnost Kompilovat Název projektu z Ladění Nabídka pro kompilaci kódu VBA v databázi, aby bylo zajištěno, že veškerý kód projektu VBA je bez chyb. Pokud jste narazili na chybu ve svých jiných programech VBA, zjistěte chybu, opravte ji a znovu zkompilujte svůj projekt. Jinak VBA IntelliSense, která zobrazuje seznam vlastností a funkcí objektů, nebude fungovat. To nám nezabrání přiřazovat/načítat hodnoty do/z Object Properties. Ale během učení je důležité vidět, jak se objeví Vlastnosti objektu a zobrazí se seznam jako asistent v Kódování.


Získat/Nastavit namísto Get/Let Property Procedure.

Vynechali jsme všechny procedury vlastností ClsArea, vytvořené v poslední verzi třídy ClsVolume, a nahradili jsme je Get/Set Property Procedures namísto Get/Let . Zkontrolujte oblast deklarace, kde jsme deklarovali p_Area je deklarován jako objekt třídy ClsArea.

Když je objekt deklarován tímto způsobem, normálně bychom měli vytvořit instanci tohoto objektu v proceduře Class_Initialize() ve výše uvedeném kódu. Zde jsme to neudělali, protože to plánujeme udělat v uživatelském programu a naplnit jeho vlastnosti příslušnými hodnotami a poté je předat třídě ClsVolume2 před konečnou fází výpočtu k použití jejich hodnot.

Všimněte si Set CArea() postup. Jeho parametr ByRef AreaValue je deklarován jako ClsArea Object. Přijme objekt třídy ClsArea, když je předán sadě vlastností CArea (ByRef AreaValue as ClsArea) , v proměnné objektu AreaValue, a přiřadí k p_Area Vlastnost ClsVolume2 Objekt.

Možnost Získat CArea() Procedura vlastnosti vrátí objekt volajícímu programu.

V našich dřívějších programech jsme napsali procedury vlastností pro jednotlivé prvky (délka, šířka, výška) objektu k přiřazení/vrácení hodnoty Do/Od jim. Zde je rozdíl v tom, že předáváme celý objekt jako parametr do procedury nastavení. Abychom získali hodnotu vlastnosti tohoto objektu (řekněme lblHeight), musíme jej označit jako CArea.dblLength . Získat/nastavit Vlastnost Název procedury CArea se stane podřízeným objektem hlavního objektu, když je deklarován v hlavním programu a k jejich procedurám vlastností lze přistupovat přímo prostřednictvím adresy objektu Vol.CArea.dblLength.

Testovací program ve standardním modulu.

Napíšeme malý program ve standardním modulu, abychom otestovali náš nový odvozený objekt třídy ClsVolume2.

Vložte do projektu nový standardní modul. Zkopírujte a vložte následující kód do modulu a uložte kód:

Public Sub SetNewVol2_1()
'Method 1/2
Dim Vol As New ClsVolume2

'ClsArea Object instantiated and passed to the
'Property Procedure Set CArea in ClsVolume2.

Set Vol.CArea = New ClsArea 'declare and instantiate the object in one statement

Stop

Vol.CArea.strDesc = "Bed Room"
Vol.CArea.dblLength = 90
Vol.CArea.dblWidth = 10

Vol.dblHeight = 10 'assign height to ClsVolume2

Stop

Debug.Print "Description", "Length", "Width", "Area", "Height", "Volume"
Debug.Print Vol.CArea.strDesc, Vol.CArea.dblLength, Vol.CArea.dblWidth, Vol.CArea.Area, Vol.dblHeight, Vol.Volume

Set Vol.CArea = Nothing
Set Vol = Nothing

End Sub

Kontrola kódu řádek po řádku.

. Pojďme se rychle podívat na výše uvedený kód VBA. První řádek vytvoří instanci třídy ClsVolume2 s názvem Vol. Po dalších dvou řádcích komentáře Nastavit prohlášení s Vol.CArea Zavolá se procedura vlastnosti a předá Nové vytvořila instanci ClsArea Objekt jako parametr.

Zastavil jsem Stop příkazem na dalším řádku, abyste udělali pauzu v programu, abyste viděli, jak je objekt přiřazen do Set Oblast Objekt. Jak? prozkoumáme to za minutu?

Další čtyři řádky přiřazují hodnoty objektu ClsArea Object a vlastnosti Height objektu ClsVolume2.

Další Zastávka vytvoří v programu pauzu, abychom mohli v paměti zkontrolovat, jak jsou hodnoty v paměti uchovávány.

Další řádek vytiskne nadpisy v okně ladění pro hodnoty vytištěné na dalším řádku.

Další řádek vytiskne hodnoty Object Properties z paměti do Debug Window.

Spusťte kód k příkazu Next Stop

Spusťte kód a prozkoumejte paměť, abychom viděli, co se tam děje v každé fázi, kam jsem vložil příkaz Stop.

  1. Klikněte někam doprostřed kódu a stiskněte F5 pro spuštění kódu a pozastavení programu při prvním příkazu Stop.
  2. Vyberte Okno Místní z Zobrazit Nabídka pro otevření nového okna pod oknem kódu, kde se zobrazí, jak jsou objekty ClsArea a ClsVolume2, jejich vlastnosti a procedury jejich vlastností členů uloženy v paměti. Ukázkový obrázek okna Místní je uveden níže.

    Okno Místní Zobrazit.



  3. Přetažením úchytů pro změnu velikosti jiných Windows zmenšíte jejich výšku a získáte více místa pro zobrazení místních obyvatel Okno. Raději zavřete okno ladění, prozatím použijte Ctrl+G, abyste jej v případě potřeby později vrátili zpět.

    Můžeme mít grafický pohled na všechny objekty a jejich vlastnosti v Místní Okno. První název se symbolem plus [+] ukazuje název Standardního modulu, odkud náš program běží.

    Další symbol plus [+] s názvem Vol je objekt v paměti vytvořený pomocí ClsVolume2.

  4. Kliknutím na symboly [+] rozbalíte a zobrazíte podrobnosti.

    Najdete další úroveň objektů a vlastností.

    [+]Oblast CA označuje, že tento objekt má další úroveň vlastností a jejich hodnot.

    dblHeight Get property Procedura se nachází přímo pod objektem Vol.

    [+]p_Area je soukromý majetek deklarovaný jako ClsArea Třída ve třídě ClsVolume2.

    p_Height je také soukromý majetek deklarovaný v ClsVolume2.

  5. Klikněte na znaménko plus [+] symboly pro rozbalení objektů a zobrazení jejich vlastností a hodnot.

    Rozšíření [+]CArea nám poskytuje pohled na objekt ClsArea, který jsme předali proceduře vlastnosti Set CArea().

    Rozšíření [+]p_Area poskytuje pohled na vlastnost ClsArea deklarovanou jako soukromou.

    Všimněte si p_Area Soukromé vlastnictví objektu třídy ClsVolume2 a všechny jeho prvky jsou přístupné pouze prostřednictvím CArea Vlastnost objektu Get/Set Postupy vůči vnějšímu světu.

    Druhý sloupec okna Locals zobrazí hodnoty přiřazené k vlastnostem objektu a aktuálně v nich žádné hodnoty.

    Třetí sloupec zobrazuje typ dat nebo názvy modulů třídy objektů.

  6. Stisknutím klávesy F5 spustíte program dále, dokud nebude pozastaven při dalším příkazu Stop, abyste přiřadili některé hodnoty do vlastností objektu. Program se pozastaví při další zastávce prohlášení. Změnu hodnot zkontrolujte v okně Locals.

Uvnitř oblasti CA Objekt první dva řádky s hodnotami 90, 10 a poslední strDesc s hodnotou "Bed Room" jsou Get Vlastnické procedury. P_Desc, p_Length a p_width jsou hodnoty přiřazené pomocí Set Vlastnické postupy do p_Area Vlastnost objektu třídy ClsVolume2.

p_Area Objekt třídy ClsArea deklarovaný jako soukromý majetek ClsVolume2 je vidět s jeho Get/Set Procedury vlastností a přiřazené hodnoty.

Zkontrolujte Typ Sloupec [-]CArea a [-]p_Area oba objekty jsou odvozeny ze základní třídy ClsArea.

Odlišné použití objektů třídy ClsArea a ClsVolume2.

Příští týden vyzkoušíme jiný přístup se stejnými dvěma objekty. Pokud si to chcete vyzkoušet sami, zde je vodítko, jak si to sami vyzkoušet.

  1. Okamžitě vytvořte třídu ClsVolume2 a ClsArea jako dva různé objekty v programu Standardního modulu.
  2. Přiřaďte hodnoty oběma vlastnostem objektu.
  3. Přiřaďte objekt s instancí ClsArea k CArea Objekt v objektu třídy ClsVolume2 před tiskem hodnot do okna ladění.

V tomto příkladu můžeme dosáhnout stejného výsledku jako ve výše uvedeném příkladu, aniž bychom museli opakovat procedury vlastností Get/Let, jak jsme to udělali v modulu třídy ClsVolume.

Odkazy všech stránek 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. Přidat objekty třídy jako položky slovníku
  18. Aktualizovat položku slovníku objektů třídy ve formuláři


  1. Vyhledávání bez rozlišení malých a velkých písmen v Oracle

  2. Automatické zvýšení hodnoty 'id' při vkládání do sqlite

  3. Použijte DATABASEPROPERTYEX() k vrácení nastavení databáze na serveru SQL

  4. PDO::__construct():Server odeslal znakovou sadu (255) neznámou klientovi. Prosím, nahlaste to vývojářům