webForumDet fria alternativet

Varför syntaxfel?

20 svar · 608 visningar · startad av bigsky

bigskyMedlem sedan maj 2002821 inlägg
#1
Sub PageContent(ByVal strPageContent)
  strPageContent = Replace(strPageContent, "[BoxFeaturedProducts]", Call BoxFeaturedProducts)
  Response.Write strPageContent
End Sub

Call BoxFeaturedProducts är också en Sub.

JosefMedlem sedan mars 20023 561 inlägg
#2

Jag tror det fungerar om du tar bort "Call"

bigskyMedlem sedan maj 2002821 inlägg
#3

Då blir det Inkompatibla typer: 'BoxFeaturedProducts'.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#4

Instämmer! Call bör du inte använda på det viset. (Eller överhuvudtaget)
Dock så verkar det konstigt att anropa Replace med en sub på det viset, eftersom en sub inte ger något retuvärde.
Vad försöker du åstadkomma?

bigskyMedlem sedan maj 2002821 inlägg
#5

Jag loppar ut html-kod från en databas. Men asp-taggarna skrivs inte ut på sidan, endast som text i källkoden.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#6

BoxFeaturedProducts hämtar något från databasen? Detta måste du returnera samt ändra BoxFeaturedProducts till att bli en function, typ så här:

Public Function BoxFeaturedProducts() as String ' Minns inte om det kallas public eller nåt annat i VB. Lämna det som står innan Sub orört.
dim retval as String

...

BoxFeaturedProducts = retval ' Här sätts returvärdet

End Function
JosefMedlem sedan mars 20023 561 inlägg
#7

Tror inte du kan sätta returtyp i asp.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#8

Jo

JosefMedlem sedan mars 20023 561 inlägg
#9

Det tror inte jag.
Detta fungerar inte

<%
Public Function GetString() As String
	Dim s As String

	s = "Hello World!"

	GetString = s
End Function

Response.Write(GetString())
%>

Medans

<%
Public Function GetString()
	Dim s

	s = "Hello World!"

	GetString = s
End Function

Response.Write(GetString())
%>

... detta gör det.

bigskyMedlem sedan maj 2002821 inlägg
#10

Så här ser det ut:

HTML-koden ligger i en databas. Koden kan man uppdatera online med hjälp av ett WYSIWYG-verktyg. Vissa färdigprogrammerade element (tex. formulär, bilder etc) i koden ska kunna placeras ut i koden med ett anrop tex. [BoxSignup].

När HTML-koden skrivs ut på webbsidan vill jag att anropet [BoxSignup] ska ersättas med det färdigprogrammerade elementet, tex. en bild eller ett formulär. Därav anropet med en replace och sub. Alla färdigprogrammerade element är subbar eller funktioner.

yohpopsMedlem sedan feb. 20011 198 inlägg
#11

Hur ser HTML-koden ut?

Förstår jag dig rätt om att du vill ersätta texten "BoxSignup" med en sub och skriva ut ASP-kod??

bigskyMedlem sedan maj 2002821 inlägg
#12

Helt rätt men jag vill skriva ut HTML inte ASP. Det är bara vanliga formulär, bilder och tabeller som ska skrivas ut.

yohpopsMedlem sedan feb. 20011 198 inlägg
#13

Skicka HTML-koden och funktionen.

bigskyMedlem sedan maj 2002821 inlägg
#14
Sub BoxFeaturedProducts
	    Response.Write "<table bgcolor=""" & strColor1 & """ border=""0"" cellpadding=""4"" cellspacing=""1"" width=""558"">"
	    Response.Write "<tr>"
	    Response.Write "<td bgcolor=""" & strColor1 & """ width=""558"" height=""20"" align=""center"" valign=""middle"" class=""headline2"" colspan=""2"">" & strTextFeaturedProducts & "</td>"
	    Response.Write "</tr>"
	  Call OpenConn()
      Set rsShowFeaturedProducts = Conn.Execute("SELECT Id, Pid, Product, Description, Price, Vat, ShowDiscount, DiscountPrice, ImgSmall, Img01 FROM tblProducts WHERE Display = True AND Featured = True AND Lang = '" & Request.Cookies("lang") & "' ORDER BY Id DESC")
	  iLoop = 0
      If Not rsShowFeaturedProducts.EOF Then
	  Do Until rsShowFeaturedProducts.EOF
	  If iLoop Mod 2 = 0 Then
	    Response.Write "<tr>"
	  End If
      Set Jpeg = Server.CreateObject("Persits.Jpeg")
      Jpeg.Open strFilePath1 & rsShowFeaturedProducts("Img01")
	  strImageWidth = Jpeg.OriginalWidth
      strImageHeight = Jpeg.OriginalHeight
	  Set Jpeg = Nothing
	    Response.Write "<td bgcolor=""" & strTableColor & """ width=""279"" height=""20"" align=""left"" valign=""top"">"
	    Response.Write "<table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""269"">"
	    Response.Write "<tr>"
	    Response.Write "<td width=""115"" height=""20"" align=""left"" valign=""middle""><a href=""#"" onClick=""centerpopup('" & strHardLinkUrl & "/inc_productimage.asp?prod=" & rsShowFeaturedProducts("Id") & "&img=" & rsShowFeaturedProducts("Img01") & "&width=" & strImageWidth & "&height=" & strImageHeight & "&windowwidth=" & strImageWidth & "'," & strImageWidth & "," & strImageHeight + 30 & ");""><img src=""" & strHardLinkImageUrl & "/products_small/" & rsShowFeaturedProducts("ImgSmall") & """ width=""110"" height=""110"" border=""0"" alt=""" & strImgTitle & " - " & rsShowFeaturedProducts("Product") & """></a></td>"
	    Response.Write "<td width=""154"" height=""20"" align=""left"" valign=""top"">"
	    Response.Write "<table border=""0"" cellpadding=""4"" cellspacing=""0"" width=""154"">"
	    Response.Write "<tr>"
	    Response.Write "<td width=""154"" height=""20"" align=""left"" valign=""top"" colspan=""2""><a href="""" class=""productlink"">" & rsShowFeaturedProducts("Product") & "</a></td>"
	    Response.Write "</tr>"
	    Response.Write "<tr>"
	    Response.Write "<td width=""154"" height=""20"" align=""left"" valign=""top"" colspan=""2"">" & rsShowFeaturedProducts("Description") & "</td>"
	    Response.Write "</tr>"
	  If rsShowFeaturedProducts("ShowDiscount") = True Then
	    Response.Write "<tr>"
        Response.Write "<td width=""154"" height=""20"" align=""left"" valign=""top"" colspan=""2"" class=""productprice"">" & strTextProductOldPrice & ""
		Response.Write "&nbsp;<strike>"
        Call BoxConvertCurrency(rsShowFeaturedProducts("Price"), rsShowFeaturedProducts("Vat"))
		Response.Write "</strike>"
		Response.Write "<br>" & strTextProductDiscountPrice
		Response.Write "&nbsp;<b>"
		Call BoxConvertCurrency(rsShowFeaturedProducts("DiscountPrice"), rsShowFeaturedProducts("Vat"))
		Response.Write "</b>"
		Response.Write "<br>" & strTextProductSave & "&nbsp;"
		Call BoxCalculateSavings(rsShowFeaturedProducts("Price"), rsShowFeaturedProducts("DiscountPrice"), rsShowFeaturedProducts("Vat"))
        Response.Write "</td>"
        Response.Write "</tr>"
	  Else
	    Response.Write "<tr>"
		Response.Write "<td width=""154"" height=""20"" align=""left"" valign=""top"" colspan=""2"" class=""productprice"">" & strTextProductPrice
		Response.Write "&nbsp;<b>"
		Call BoxConvertCurrency(rsShowFeaturedProducts("Price"), rsShowFeaturedProducts("Vat"))
		Response.Write "</b></td>"
        Response.Write "</tr>"
	  End If
	    Response.Write "<tr>"
	    Response.Write "<td width=""77"" height=""20"" align=""left"" valign=""top"">"
	    Response.Write "<table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""67"" height=""21"">"
		Response.Write "<tr>"
	    Response.Write "<td background=""" & strHardLinkImageUrl & "/button_left.gif"" width=""9"" height=""21"" align=""center"" valign=""middle""></td>"
	    Response.Write "<td background=""" & strHardLinkImageUrl & "/button_middle.gif"" width=""49"" height=""21"" align=""center"" valign=""middle""><a href=""" & strHardLinkUrl & "/default.asp"" class=""buttonlink"">" & strTextProductReadMore & "</a></td>"
		Response.Write "<td background=""" & strHardLinkImageUrl & "/button_right.gif"" width=""9"" height=""21"" align=""center"" valign=""middle""></td>"
	    Response.Write "</tr>"
	    Response.Write "</table></td>"
		Response.Write "<td width=""77"" height=""20"" align=""left"" valign=""top"">"
	    Response.Write "<table border=""0"" cellpadding=""0"" cellspacing=""0"" width=""67"" height=""21"">"
	    Response.Write "<tr>"
		Response.Write "<td background=""" & strHardLinkImageUrl & "/button_left.gif"" width=""9"" height=""21"" align=""center"" valign=""middle""></td>"
	    Response.Write "<td background=""" & strHardLinkImageUrl & "/button_middle.gif"" width=""49"" height=""21"" align=""center"" valign=""middle""><a href=""" & strHardLinkUrl & "/default.asp"" class=""buttonlink"">" & strTextProductBuy & "</a></td>"
	    Response.Write "<td background=""" & strHardLinkImageUrl & "/button_right.gif"" width=""9"" height=""21"" align=""center"" valign=""middle""></td>"
		Response.Write "</tr>"
	    Response.Write "</table></td>"
	    Response.Write "</tr>"
		Response.Write "</table></td>"
		Response.Write "</tr>"
		Response.Write "</table></td>"
	  iLoop = iLoop + 1
	  If iLoop Mod 2 = 0 Then
		Response.Write "</tr>"
	  End If
	  rsShowFeaturedProducts.MoveNext
	  Loop
	  End If
	  rsShowFeaturedProducts.Close : Set rsShowFeaturedProducts = Nothing
	  Call CloseConn()
		Response.Write "</td>"
		Response.Write "</tr>"
		Response.Write "</table>"
    End Sub
bigskyMedlem sedan maj 2002821 inlägg
#15

Det är inget fel på HTML-koden som ska skrivas ut eller själva subben. Problemet ligger i att byta ut [BoxFeaturedProducts] som kommer från databasen mot att anropa subben BoxFeaturedProducts.

bigskyMedlem sedan maj 2002821 inlägg
#16

Enklast hade ju varit om man bara kunder spara <% Call BoxFeaturedProducts %> direkt i databasen, men då händer ju inget när man skriver ut HTML-koden från databasen.

yohpopsMedlem sedan feb. 20011 198 inlägg
#17

Du måste göra om suben till en funktion och returnera den html-koden..

bigskyMedlem sedan maj 2002821 inlägg
#18

Men det funkade ju perfekt! Tänk att det var så enkelt... Hade för mig att jag redan provat på att ändra den till en funktion men jaja... tack.

bigskyMedlem sedan maj 2002821 inlägg
#19

Fast riktigt så enkelt var det kanske inte. Problemet nu är att funktionen BoxFeaturedProducts skrivs ju ut oavsett om elementet [BoxFeaturedProducts] finns med i databasen eller inte.

Function BoxFeaturedProducts
Response.Write "<table bgcolor=""" & strColor1 & """ border=""0"" cellpadding=""4"" cellspacing=""1"" width=""558"">"
Response.Write "<tr>"...
Sub PageContent(ByVal strPageContent)
strPageContent = Replace(strPageContent, "[BoxFeaturedProducts]", BoxFeaturedProducts)
Response.Write strPageContent
End Sub
yohpopsMedlem sedan feb. 20011 198 inlägg
#20

Du kan inte ha response.write i funktionen.
Du måste spara det du skriver ut i en variabel och returnera det..

Function BoxFeaturedProducts
Dim v_ret
v_ret = "<table bgcolor=""" & strColor1 & """ border=""0"" cellpadding=""4"" cellspacing=""1"" width=""558"">"
v_ret = v_ret & "<tr>"
BoxFeaturedProducts = v_ret
End Function
260 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
130 ms — hämta forumlista (db)
127 ms — hämta statistik (db)
130 ms — hämta tråd, inlägg och bilagor (db)