webForumDet fria alternativet

Förenkla If Else-satser?

ASP

11 svar · 205 visningar · startad av solbulle

Medlem sedan mars 20015 287 inlägg
Frågan#1

Jag har en massa liknande satser i min kod:

If rs("Pris") <> "" then
strPris = strTd & "<td><b>Inköpspris:</b></td><td>" & RS("Pris") & " Kr</td><td></td></tr>"
Else
strPris = ""
End If

If rs("Kommentar") <> "" then
strKommentar = strTd & "<td  VALIGN=TOP><b>Kommentar:</b></td><td>" & RS("Kommentar") & "</td><td></td></tr>"
Else
strKommentar = ""
End If

(strTD innehåller lite <tr>/><td> liknande kod inkl styles)

som jag slutligen skriver ut med:

Response.write strPris & strKommentar

osv.

Finns det något enklare/smidigare sätt att kolla om jag har någon info i mitt rs och i så fall placera det i en variabel/få det utskrivet i en liknande tabellrad?

select case???

------------------
/solbulle
Hemmabio | Spelautomater | The Who

Medlem sedan dec. 200012 464 inlägg
#2

Du skulle kunna göra en funktion som

function condAssign(str1,str2)
if str1 <> "" then
  condAssign = str2
else
  condAssign = str1
end if
end function

strPris = condAssign(rs("pris"),strTd & "<td><b>Inköpspris:</b></td><td>" & RS("Pris") & " Kr</td><td></td></tr>")

------------------
essentitia preter non sans multiplicandum

Medlem sedan mars 20015 287 inlägg
#3

Kanon, där kapade jag en massa rader från min kod.
Får iofs inte denna att fungera, men jag kan ju köra de "på det gamla sättet"

strLjud = condAssign(rs("Ljud"),strTd & "<td><b>Ljud:</b></td><td><a class=film href=""" & "motor.asp?datafalt=Ljud&datavarde=" & server.urlencode(RS("Ljud")) & """>" & RS("Ljud") & "</td><td></td></tr>")

------------------
/solbulle
Hemmabio | Spelautomater | The Who

Medlem sedan mars 20015 287 inlägg
#4

Ingen som vet hur jag löser ovanstående? Det blir fel på server.urlencode-biten.

Ett fnuttfel antar jag?

------------------
/solbulle
Hemmabio | Spelautomater | The Who

[Redigerat av solbulle den 19 dec 2001]

Medlem sedan maj 20011 312 inlägg
#5

Jag har en fråga bara...vad innebär detta kommando i din kod?

server.urlencode(RS("Ljud"))

------------------
Alltid lär man sig något nytt varje dag...

Medlem sedan mars 20015 287 inlägg
#6

?

Det gör ju så att länken blir "webläsarsäker" (kan man uttrycka sig så?)

typ:

<a href="motor.asp?datafalt=Ljud&datavarde=Dolby+Digital">

Vilket blir i adressfönstret:
motor.asp?datafalt=Ljud&datavarde=Dolby+Digital

Iställer för:

<a href="motor.asp?datafalt=Ljud&datavarde=Dolby Digital">

som blir:
motor.asp?datafalt=Ljud&datavarde=Dolby Digital

eller
motor.asp?datafalt=Ljud&datavarde=Dolby%20Digital
------------------
/solbulle
Hemmabio | Spelautomater | The Who

[Redigerat av solbulle den 19 dec 2001]

[Redigerat av solbulle den 19 dec 2001]

Medlem sedan mars 20002 836 inlägg
#7

Server.URLEncode gillar inte att få null-värden.

Du får se till att om det är ett null-värde så ska inte server.URLEncode användas

cya,
PatrikB

------------------
'## -- second place is the first looser -- ##'

Medlem sedan mars 20015 287 inlägg
#8

Hm... men jag kör väl inte server.urlencode överhuvudtaget om RS är tomt? (eller Null?) I och med den funktion jag har som kollar om fältet innehåller något eller inte, så jag tycker inte att det kan vara problemet?

[red
Fast vid närmare eftertanke kanske den visst körs innei funktionen så att säga...?

Hur som helst, går det att lösa på något smidigt sätt? Iofs inte jätteviktigt, det fungerar ju "oftast" i alla fall.
------------------
/solbulle
Hemmabio | Spelautomater | The Who

[Redigerat av solbulle den 19 dec 2001]

Medlem sedan dec. 200012 464 inlägg
#9

Du kan kontrollera om ett värde är null med hjälp av funktionen isnull t.ex.

if not isnull(rs("fld") then

eller så kan man göra en kombinerad test av null och tom sträng.

if len("" & rs("fld")) > 0 then

------------------
essentitia preter non sans multiplicandum

Medlem sedan mars 20015 287 inlägg
#10

Jo, men jag ser inte riktigt hur det kan hjälpa mig här.
Min "ordinarie" sats fungerar som den är men det är när jag försöker att köra funktionen condAssign på den som jag får felmeddelandet:
Type mismatch: 'Server.urlencode'

Som jag ser det är det i funktionen något går snett. Jag fattar inte hur asptolken ens "hinner" fram till server.urlencode eftersom det första villkoret inte uppfylls? (Det är ju bara när RS är tomt som den klagar.)
Fast jag är väl ute o cyklar som vanligt.

------------------
/solbulle
Hemmabio | Spelautomater | The Who

[Redigerat av solbulle den 19 dec 2001]

Medlem sedan dec. 200012 464 inlägg
#11

Parametrarna till condAssign evalueras innan anropet och då körs server.urlencode

Du kan ju göra ytterligare en funktion

strLjud = condAssign(rs("Ljud"),strTd & "<td><b>Ljud:</b></td><td><a class=film href=""" & "motor.asp?datafalt=Ljud&datavarde=" & server.urlencode(nullAssign(RS("Ljud"),"")) & """>" & RS("Ljud") & "</td><td></td></tr>")
function nullAssign(str1,str2)
if isnull(str1) then
nullAssign = str2
else
nullAssign = str1
end if
end function

------------------
essentitia preter non sans multiplicandum

Medlem sedan mars 20015 287 inlägg
#12

Vad ska man säga... Fungera Klockrent! Tackar!

Börjar få småsår i pannan av allt bugande o bockande. :)
------------------
/solbulle
Hemmabio | Spelautomater | The Who

[Redigerat av solbulle den 19 dec 2001]

262 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)