15. oktober 2000 - 21:35Der er
6 kommentarer og 1 løsning
Nestede objekter i Class Modules
Hejsa
Hvis jeg nu har et klassemodul i vba, som fx. indeholder et public recordset. Så kunne det jo være at jeg gerne ville tilgå dette recordset direkte fra mit objekt.
Den kode jeg skal kunne skrive er følgende :
sub test1 set test = new Class1 msgbox test.pubrs.recordcount end sub
Der skal bruges properties i klassen for at tilgå variablen, der også skal være private. Men for at simplificere problemet lidt så... ik !
Den eneste måde jeg indtil nu har kunne tilgå et \"objekt i et objekt\" er ved at lave en \"property get\" der returnerer et object. Jeg sætter så et midlertidigt object lig det returnerede og kan så arbejde på det midlertidige. Når jeg er færdig med det sender jeg så det midlertidige object retur til en property set. Dette synes en smule unødvendigt. Man burde kunne tilgå objektet direkte med flere dot\'s...
test1_virker er den måde jeg har gjort det på hidtil. test1_skal_virke er den måde jeg gerne vil kunne få det til at virke på.
sub test1_virker set test = new Class1 dim temprs as recordset
set temprs = test.pubrs
msgbox temprs.recordcount end sub
sub test1_skal_virke set test = new Class1 msgbox test.pubrs.recordcount end sub
Hvis du laver en funktion, der hedder pubrs, der returnerer det recordset, der skal bruges kan det lade sige gøre ved at bruge dot\'s som du selv kalder det!
Altså
Private TheRecordSet as New RecordSet
Public Function pubrs() as RecordSet Set pubrs = TheRecordSet End Function
Så kan du der hvor du bruger objektet gøre følgende!
Dim test = new Class1 MsgBox test.pubrs.recordcount
Hmmm.... dummeslag til mig... damn. Jeg har returneret as object... skulle natuligvis være as \"det aktuelle object\" jeg nu engang havde gang i... for pokker
Det ville faktisk også virke hvis du returnerede as Object!
Forskellen er bare at hvis du gør det på denne måde foregår, der det, der hedder lata binding, hvilket både gør det hele en smule langsommere, da selve linkningen først sker runtime, og også gør at du ikke design time kan se hvilke properties og metoder objektet har! Men jeg garanterer dig at det også virker med as Object!
Nikolaj
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.