webForumDet fria alternativet

Tilldela dynamiska stränger

ASP

10 svar · 676 visningar · startad av Sasch

Medlem sedan nov. 2002830 inlägg
Frågan#1
      For I = 0 TO 3
         IF strLink"& I &"URL = "" then
            strLink"& I &"URL = 0
         End IF

         IF strLink"& I &"Display = "" AND strLink"& I &" <> "" then
            strLink"& I &"Display = strLink"& I &"URL
         End IF
      Next

Jag får felmeddelande när jag skapar en strLink (Dynamisk 1:a, 2:a el. 3.a) Display och pekar på första citat-tecknet och vill att jag ska avsluta raden där.

Jag har lyckats lösa problemet med Request.Form("Link"& I &"Dispaly") där I är en siffra...

Finns det något sätt att lösa denna problematiken?

Medlem sedan feb. 200112 078 inlägg
#2

Sasch skrev:

      For I = 0 TO 3
         IF strLink"& I &"URL = "" then
            strLink"& I &"URL = 0
         End IF

         IF strLink"& I &"Display = "" AND strLink"& I &" <> "" then
            strLink"& I &"Display = strLink"& I &"URL
         End IF
      Next

Jag får felmeddelande när jag skapar en strLink (Dynamisk 1:a, 2:a el. 3.a) Display och pekar på första citat-tecknet och vill att jag ska avsluta raden där.

Jag har lyckats lösa problemet med Request.Form("Link"& I &"Dispaly") där I är en siffra...

Finns det något sätt att lösa denna problematiken?

Något sådant som dynamiska variablar finns inte i VBScript. Du får nog lösa det där med ett dictionary istället, om du inte gör på nåt annat sätt. Här har du kod för att skapa ett, sen är det bara att börja bygga nycklar. :)

/red. Ja, sålänge du inte vill använda Execute(), men jag rekommenderar det inte.

set dic = server.createobject("scripting.dictionary")
dic.comparemode = 1

'add key
dic("strLink" & i & "URL") = "foobar"

'write key
response.write dic("strLink" & i & "URL")

set dic = Nothing

Exakt vad är det du vill göra egentligen?

Medlem sedan juni 200032 967 inlägg
#3

Två alternativ:

  1. Använd en array
  2. Använd Execute().

Exempeltrådar om Execute():
http://www.webforum.nu/showthread.php?t=134423
http://www.webforum.nu/showthread.php?t=58960

Medlem sedan nov. 2002830 inlägg
#4

OveRRidE skrev:

Exakt vad är det du vill göra egentligen?

INSERT INTO tbl_faq (Link1Display, Link2Display, Link3Display, Link1URL, Link2URL, Link3URL) VALUES (bla bla)

Jag vill kolla om formuläret har formuläret har information i sig, annars klagar SQL när jag försöker stoppa in en sträng som inte innehåller någonting så jag jag kollar om strängen är tom och om den är det så skickar puttar jag in en nolla.

Och ja, jag har tillåtit null i för databas-fälten.

Medlem sedan nov. 2002830 inlägg
#5

@nders; Jag valde att arbeta vidare med Execute() dock kom jag inte så långt.

Kod:

Microsoft VBScript compilation error '800a03ee'

Expected ')'

/admin/admin_faq.asp, line 139

IF Execute(strLink"& I &"URL = "") THEN
------------------^

Även försökt med "IF Execute(strLink"& I &"URL) = "" THEN" vilket gav fel på samma ställe som ovan. Skulle du kunna hjälpa mig med detta?

Medlem sedan juni 20019 519 inlägg
#6
"strLink" & i & "URL"

du glömde " i början

Medlem sedan nov. 2002830 inlägg
#7

voigtann1: Tack! jag trodde inte det behövdes i och med att det normal sett inte behövs för variabler inom () men det ser ut som om Execute() gör om texten man sätter i klamrarna till variabler... jaja :) tack!

Medlem sedan juni 20019 519 inlägg
#8

men strLink är ingen variabel ;)

Medlem sedan nov. 2002830 inlägg
#9

voigtann1 skrev:

men strLink är ingen variabel ;)

;) Du har så rätt, det är bara en hållare (container).

	FOR I = 1 TO 3
		IF rsLoadFaq("Link"& I &"URL") = "" OR rsLoadFaq("Link"& I &"URL") = "0" THEN
			Execute("strLink"& I &"URL") = ""
		ELSE
			Execute("strLink"& I &"URL") = rsLoadFaq("Link"& I &"URL")
		End IF

		IF rsLoadFaq("Link"& I &"Display") = "" OR rsLoadFaq("Link"& I &"Display") = "0" THEN
			Execute("strLink"& I &"Display") = ""
		ELSE
			Execute("strLink"& I &"Display") = rsLoadFaq("Link"& I &"Display")
		END IF
	NEXT

Så här ser det ut nu, vad som inte fungerar är att den klagar på "Execute" som "Type mismatch: 'Execute'". Vad gör jag för fel?

Medlem sedan jan. 2004128 inlägg
#10

Du kan ju inte "sätta ett värde på en funktion" sådär...
Radera allt efter "Execute(...)".

Medlem sedan dec. 19996 721 inlägg
#11

Framför allt, använd ett dictionary i stället. Mycket säkrare och effektivare än Execute.

269 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)