Avatar billede entracore Nybegynder
03. marts 2003 - 11:56 Der er 10 kommentarer og
1 løsning

Collection Exists

Hey

Hvordan finder finder man ud af om en værdi allerede eksisterer i sin collection.

Jeg har forøgt mig med MyCollection.Item(MyParam) men det virker ikke.

Er der mon nogle der har andre løsningsforslag.
Avatar billede entracore Nybegynder
03. marts 2003 - 11:59 #1
...og jeg har ikke brug for en løsning der løber igennem min collection for på den måde at finde ud af om værdien allerede eksisterer ;-)
Avatar billede martin_moth Mester
03. marts 2003 - 12:43 #2
"Jeg har forøgt mig med MyCollection.Item(MyParam) men det virker ikke."
Hmmm - det er ellers måden, vil jeg mene.

On Error Resume Next
Set Item = MyCollection.item(MyIndex)
if err.number <> 0 then
  msgbox "Objektet findes"
End if

PS. En collection består af objekter, ikke værdier, bare for at være flueknepper ;o)
Avatar billede entracore Nybegynder
03. marts 2003 - 12:52 #3
He he Martin - jeg er sgu ikke særlig vild med at du anvender Error Resume Next i dit eksempel... men de andre eksempler jeg har set på benytter samme fremgangsmåde som din... måske er den eneste sober løsninger at løbe igennem collection også sammenligne objekterne med MyParam værdien. ;-)

Du sætter Item = MyCollection.Item(MyIndex) - hvad retunere Item ???
Avatar billede martin_moth Mester
03. marts 2003 - 12:53 #4
Et objekt
Avatar billede martin_moth Mester
03. marts 2003 - 13:03 #5
Du kan også være mere specifik:

On Error Resume Next
Set Item = MyCollection.item(MyIndex)
if err.number = 9 then    '<--- RETTET
  msgbox "Objektet findes ikke"  '<--- RETTET
End if

Jf. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vblr7/html/vamthItem.asp, hvor fejlkoden er angivet som 9.
Avatar billede entracore Nybegynder
03. marts 2003 - 13:04 #6
err.Number vil altid være forskellig fra 0 - om MyIndex eksistere i MyCollection eller ej.
Avatar billede martin_moth Mester
03. marts 2003 - 13:06 #7
Da ikke hvis der ikke er nogen fejl! Så er err.Number = 0
Avatar billede entracore Nybegynder
03. marts 2003 - 13:23 #8
Hmmm det virker lidt mystisk... den eneste fejl nummer jeg kan fremprovokere er tallet 5.

Her min kode:

On Error Resume Next

Dim aStrItem As Object

Set aStrItem = gStrNodeListArray.Item(aStrNodeList.Text)

MsgBox Err.Number
Avatar billede martin_moth Mester
03. marts 2003 - 13:40 #9
Er du sikker på at din collection indeholder noget - og hvilken fejlbesked hører til err.number 5?
Har du evt. glemt at bruge New..?
Kan du overhovedet loope igennem alle dine items?
Avatar billede entracore Nybegynder
03. marts 2003 - 13:53 #10
Fejlbeskeden 5 har følgende beskrivelse: "Invalid procedure call or argument (Error 5)"

Min collection indeholder objekter og man kan ikke anvende New når man dimensionere et objekt (VB giver en fejl).

Og jeg kan godt løbe igennem alle mine items.
Avatar billede martin_moth Mester
03. marts 2003 - 18:55 #11
Så har du nok en stavefejl eller lignende et eller andet sted...
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