webForumDet fria alternativet
Logga in / Bli medlem

Funktion problem

ASP

6 svar · 248 visningar · startad av Addeladde

Medlem sedan jan. 20013 406 inlägg
Trådstart#1

Hej

JAg har en funktion som ska ändra lite kod åt mig men jag får det inte att fungera.

Här är funktionen

FUNCTION fixaKod( txtcontent, mall, titel, forfattare, indexera, nyckelord, datumStart, datumSlut, con, publicering )
 
  ' öppna Recordset
	Set hamtaMallRS = Server.CreateObject( "ADODB.Recordset" )
	hamtaMallRS.ActiveConnection = Con
	hamtaMallRS.CursorType = 3
	hamtaMallRS.Open "SELECT * FROM mallar WHERE mall_id=" & mall
	IF NOT hamtaMallRS.EOF THEN
	  mallKod  = hamtaMallRS( "mall_kod" )
	END IF
	' stäng Recordset
	hamtaMallRS.Close
	set hamtaMallRS = nothing
	
  
  IF publicering <> "1" THEN
    kod = kod + "<" + "% IF date < #"& datumStart &"# OR(date > #"& datumSlut &"#) THEN" & vbcrlf 
	kod = kod + "response.redirect ""../400.asp""" & vbcrlf 
	kod = kod + "END IF %"+ ">"  & vbcrlf
  END IF
  
  'Lägg till mallkoden
  kod = kod + mallKod

  kod = replace(kod, "[kod]", txtContent)
  kod = replace(kod, "[titel]", titel)
  kod = replace(kod, "[nyheter]", "<" & "!--#include file=""nyheter.asp""--" & ">")
  kod = replace(kod, "[meny]", "<" & "!--#include file=""49.asp""--" & ">")
  kod = replace(kod, "[forfattare]", forfattare)
  kod = replace(kod, "[skapad]", date)
  kod = replace(kod, "[logga]", "<img name=""logo"" src=""../bilder/system/logo.gif"">")
  
  IF Instr(kod,"<head>")>0 Then
  dim metakod
    IF indexera = "1" THEN
	  metakod = "<head>" & vbcrlf
	  metaKod = metakod + "<meta name=""robots"" content=""index"">" & vbcrlf
	  metaKod = metaKod + "<meta name=""keywords"" content="""& nyckelord &""">" & vbcrlf
	ELSE
	  metakod = "<head>" & vbcrlf
	  metaKod = "<meta name=""robots"" content=""noindex"">" & vbcrlf
	END IF
	
	IF metaKod <> "" THEN
	  kod = replace(kod, "<head>", metakod)	
	END IF
  END IF
  
  'Gör om tidspublicerade länkar
    tidLank1 =  "<"&"% Set con2 = Server.CreateObject(""ADODB.Connection"")"&vbcrlf &_
		   	"con2.Open Application(""cmdatabas"")" &vbcrlf &_
			"Set lankRS = Server.CreateObject( ""ADODB.Recordset"" )" &vbcrlf &_
			"lankRS.ActiveConnection = Con2" &vbcrlf &_
			"lankRS.CursorType = 3" &vbcrlf &_
			"lankRS.Open ""SELECT * FROM sidor WHERE sida_id="  
	
	tidlank2 =  """" &vbcrlf &"IF NOT lankRS.EOF THEN" &vbcrlf &_
				"IF NOT date() < cDate(lankRS( ""sida_datum_start"" )) THEN" &vbcrlf &_
			    "IF NOT date() > cDate(lankRS( ""sida_datum_slut"" )) THEN %"&">" &vbcrlf
				
	tidlank3 =  ""&vbcrlf&"<"&"% END IF" &vbcrlf &_						
				"END IF" &vbcrlf &_
				"END IF" &vbcrlf &_
				"lankRS.close" &vbcrlf &_ 
				"set lankRS = nothing" &vbcrlf &_
				"con2.close" &vbcrlf &_
				"set con2 = nothing %"&">" &vbcrlf
	
	
	kod = replace(kod, "[<!--<ID=", tidlank1)
	kod = replace(kod, ">-->Lank<!--<", tidlank2)
	kod = replace(kod, "[END IF]>-->]", tidlank3)
  
  'Slut tidspublicerade länkar
  '''''''''''''''''''''''''''''''''''
END FUNCTION

Så här anroppar jag funktionen:

kod= fixaKod( txtcontent, mall, titel, forfattare, indexera, nyckelord , datumStart, datumSlut, con, publicering )

Jag får felmeddelandet:

Feltyp:
Körningsfel i Microsoft VBScript (0x800A000D)
Inkompatibla typer: 'fixaKod'

Medlem sedan dec. 19998 577 inlägg
#2

Borde du inte ha ett returvärde?
Nu har du allt i variabeln "kod", medans funktionen heter fixakod.

Medlem sedan jan. 20013 406 inlägg
#3

Får jag inte allt i variabeln kod när jag anroppar det så här:
kod = fixaKod( variabler )

Eller hur gör jag?

Medlem sedan jan. 20013 406 inlägg
#4

Glöm felmeddelandet inkompatibla typer fixakod. Det var ett jätte klantfel.

Men det blir inte rätt med min kod som behandlas i funktionen.

Medlem sedan juni 200032 967 inlägg
#5

Du måste returnera något från funktionen också. Det gör du genom att sist i funktionen (före End Function givetvis) skriva FunktionensNamn = VärdeAttReturnera. Är det objekt som ska returneras från en funktion använder du givetvis Set framför också.

mvh

Medlem sedan dec. 19998 577 inlägg
#6

Nej, du måste returnera ett värde ifrån funktionen för att göra så.

byt
kod = replace(kod, "[END IF]>-->]", tidlank3)
till
fixakod = replace(kod, "[END IF]>-->]", tidlank3)

Medlem sedan jan. 20013 406 inlägg
#7

Japp nu verkar det fungera när jag la till
fixaKod = kod

Tack så hemskt mycket för hjälpen Vide och @nders

409 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
131 ms — deklarationer (db)
132 ms — hämta statistik (db)
134 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)