Avatar billede mn Nybegynder
15. oktober 2000 - 21:35 Der 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 !

Håber at få noget ekspert-hjælp :)

hej hej
Avatar billede pryce Nybegynder
15. oktober 2000 - 23:25 #1
Hvad er dit spørgsmål?
Avatar billede mn Nybegynder
15. oktober 2000 - 23:34 #2
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


Anybody !??!
Avatar billede mn Nybegynder
16. oktober 2000 - 10:23 #3
lille rettelse :

sub test1_virker
  dim test = new Class1  \'ikke set men dim her...
  dim temprs as recordset

  set temprs = test.pubrs

  msgbox temprs.recordcount
end sub

Hej igen

Avatar billede mn Nybegynder
17. oktober 2000 - 12:10 #4
Nu 200 point...
Avatar billede nolle_k Nybegynder
20. oktober 2000 - 22:07 #5
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


Det virker! Det er sikkert og vist!
Avatar billede mn Nybegynder
22. oktober 2000 - 18:20 #6
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

Jeg vil ikke kode mere, suk.  ;)

nå, men tak.
  Morten
Avatar billede nolle_k Nybegynder
23. oktober 2000 - 08:13 #7
For resten!!

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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester