webForumDet fria alternativet

Variabel utanför function

5 svar · 279 visningar · startad av joup

joupMedlem sedan feb. 2002116 inlägg
#1

Jag har en liten funktion som hämtar data från en forumlär och skriver det till ett XML-dokument. Problemet är att jag har en variabel, FinnsFil, som jag vill skall kunna gå att komma åt även utanför funktionen. Hur gör man det?

Function addNewContacttoXML(strXMLFilePath, strFileName)

 'Declare local variables.
 Dim objDom
 Dim objRoot
 Dim objRecord
 Dim objIngr
 Dim objField
 Dim objFieldValue
 Dim objattID
 Dim objattTabOrder
 Dim objPI
 Dim objPI2
 Dim FilFinns
 Dim x

 Set objDom = server.CreateObject("Microsoft.XMLDOM")
 objDom.preserveWhiteSpace = True

 FilFinns = objDom.Load(strXMLFilePath & "\" & strFileName)

 If FilFinns = True Then

	Response.Write("Det här drinkrecepet finns redan. ")

 Else

  Set objRoot = objDom.createElement("drink")
  objDom.appendChild objRoot

 Set objIngr = objDom.createElement("ingredienser")
 objRoot.appendChild objIngr

 For x = 1 To Request.Form.Count

  If instr(1,Request.Form.Key(x),"knapp") = 0 Then

	If len(Request.Form(x))>0 then

	if left(Request.Form.Key(x),4) = "namn" then

 Set objNam = objDom.createElement("ingrediens")
 objIngr.appendChild objNam

   Set objField = objDom.createElement(left(Request.Form.Key(x),4))

   objField.Text = Request.Form(x)

   objNam.appendChild objField

	else

   Set objField = objDom.createElement(left(Request.Form.Key(x),10))

   objField.Text = Request.Form(x)

   objRoot.appendChild objField

	end if

	End if

   Set objField = objDom.createElement("bild")

   objField.Text = Trim(Replace(Request.Form("drinknamn")," ","")) & ".jpg"

   objRoot.appendChild objField

  End If

 Next 

 If FilFinns = False then

  Set objPI2 = objDom.createProcessingInstruction("xml-stylesheet", "type='text/xsl' href='drink.xslt'")

  objDom.insertBefore objPI2, objDom.childNodes(0)

  Set objPI = objDom.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'")

  objDom.insertBefore objPI, objDom.childNodes(0)

 End If

 objDom.save strXMLFilePath & "\" & strFileName

 End If

 Set objDom = Nothing
 Set objRoot = Nothing
 Set objRecord = Nothing
 Set objField = Nothing
 Set objFieldValue = Nothing
 Set objattID = Nothing
 Set objattTabOrder = Nothing
 Set objPI = Nothing

End Function

On Error Resume Next

addNewContacttoXML Server.MapPath("/xml/drinkar"),Trim(Replace(Request.Form("drinknamn")," ","")) & ".xml"

If err.number <> 0 then
 Response.write("Det blev något fel när ditt drinkrecept skulle sparas.<br>")
Else
 If FilFinns = False then
 Response.write("Ditt drinkrecept är sparat.<br>")
 End If
End If

Det är alltså längst ned där, i "error"-hanteringen som jag vill att FilFinns skall gå att anropa. Men det vill inte riktigt fungera... :(

PeeerMedlem sedan mars 20025 907 inlägg
#2

Det går inte att hämta en variabel innifrån en funktion på det viset (eller?). Du kan väl skapa en temporär session inne i funktionen som du sedan kontrollerar och förstör.

@ndersMedlem sedan juni 200032 969 inlägg
#3

Eftersom du har "Dim FilFinns" i funktionen blir den lokal. Flytta ut det utanför så blir den global.

Mvh

joupMedlem sedan feb. 2002116 inlägg
#4

Ah, vad dum jag är :)

Tack för hjälpen @nders!

solbulleMedlem sedan mars 20015 287 inlägg
#5

Det där är väl för övrigt ett praktexempel på en Sub och ingen funktion?

@ndersMedlem sedan juni 200032 969 inlägg
#6

solbulle skrev:

Det där är väl för övrigt ett praktexempel på en Sub och ingen funktion?

Japp.

137 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)