Avatar billede lklingenberg Nybegynder
18. februar 2004 - 12:17 Der er 4 kommentarer og
1 løsning

Test om object er eksisterende og/eller Nothing

Hi E,

Titlen siger det meste, men uddbybende kan jeg sige at det er ifm. nedenstående script.

I scriptet sættes to objekter objNodeGruppeSuper og objNodeGruppeAdmin. Disse to objekter vil ikke altid indeholde noget (da XML'en i visse tilfælde kun vil indeholde det ene element og i andre tilfælde ingen af elementerne). Jeg har læst, at hvis metoden selectSingleNode returnerer Nothing hvis den ikke finder elementet i XML'en. Derfor vil jeg gerne teste om objektet har en værdi eller om det er Nothing.

Dim oXmlDoc, oNodeList, srvXmlHttp
Set srvXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.4.0")
srvXmlHttp.open "GET", "http://isis.ku.dk/isis/scripts/personv1/xml_person.aspx?personid=" & iPersonid, false
srvXmlHttp.send()
Set oXmlDoc = srvXmlHttp.responseXML
oXmlDoc.setProperty "SelectionLanguage", "XPath"
oXmlDoc.setProperty "SelectionNamespaces", "xmlns:isis='xml_person.isis.ku.dk'"

Dim objNodeFornavn, objNodeEfternavn, objNodeGruppeAdmin, objNodeGruppeSuper
Set objNodeFornavn = oXmlDoc.selectSingleNode("/isis:ISIS/isis:person/isis:fornavn")
Set objNodeEfternavn = oXmlDoc.selectSingleNode("/isis:ISIS/isis:person/isis:efternavn")
Set objNodeGruppeAdmin = oXmlDoc.selectSingleNode("/isis:ISIS/isis:person/isis:org[isis:orgid=7214]/isis:navn")
Set objNodeGruppeSuper = oXmlDoc.selectSingleNode("/isis:ISIS/isis:person/isis:org[isis:orgid=7219]/isis:navn")
Session("NodeFornavn") = objNodeFornavn.text
Session("NodeEfternavn") = objNodeEfternavn.text
Avatar billede medions Nybegynder
18. februar 2004 - 12:33 #1
Brug IsObject()

//>Rune
Avatar billede medions Nybegynder
18. februar 2004 - 12:34 #2
Fx.

If IsObject(varnavn) Then

End If

//>Rune
Avatar billede lklingenberg Nybegynder
18. februar 2004 - 12:53 #3
Ja, IsObject var også min første tanke og forsøgte mig med flg.:

If IsObject(objNodeGruppeSuper) Then
  Session("NodeGruppe") = "Superbruger"
ElseIf IsObject(objNodeGruppeAdmin) Then
  Session("NodeGruppe") = "Administrator"
Else
  Session("NodeGruppe") = "Bruger"
End If

Problemet er bare at alle bliver "Superbruger" fordi objNodeGruppeSuper tilsyneladende opfylder If-betingelsen.
Avatar billede lklingenberg Nybegynder
18. februar 2004 - 12:54 #4
Jeg gør lige sætningen færdig :-)
...tilsyneladende opfylder If-betingelsen hver gang. Altså uanset om elementet findes i XML'en eller ej.
Avatar billede lklingenberg Nybegynder
18. februar 2004 - 13:40 #5
Jeg har fundet en anden måde at gøre det på, så med mindre nogen kan beskrive en nemmere/hurtigere måde at foretage testen på, så lukker jeg spm.

Set objNodeGruppeAdmin = oXmlDoc.selectNodes("/isis:ISIS/isis:person/isis:org[isis:orgid=7214]")
Set objNodeGruppeSuper = oXmlDoc.selectNodes("/isis:ISIS/isis:person/isis:org[isis:orgid=7219]")
                       
intNodeGruppeAdminLength = objNodeGruppeAdmin.length
intNodeGruppeSuperLength = objNodeGruppeSuper.length
           
If intNodeGruppeAdminLength = 1 Then
  Session("NodeGroup") = "administrator"
ElseIf intNodeGruppeSuperLength = 1 Then
  Session("NodeGroup") = "superbruger"
Else
  Session("NodeGroup") = "bruger"
End If
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