webForumDet fria alternativet

Tankefel med strängvärde eller...

ASP

5 svar · 310 visningar · startad av Anders_Sj

Medlem sedan apr. 20004 inlägg
Frågan#1

Hej!

Jag har en rapportsida som ska visa ett antal inkomna rapporter. Ett kommentarfält ska visas ifall någon har skrivit en kommentar kring den aktuella rapporten. När man sedan visar resultatet borde man ju först kunna kolla om någon skrivit en kommentar eller inte - genom att se strängens eventeulla längd, och därefter visa detta...

Men jag missar ngt - ngn som direkt ser vad det är? I koden nedan så står "..." för div vanlig html-kod.

(I mitt resultat visas rapporten ok, men när jag sätter in vilkorssaten så visas inte den inskrivna kommentaren vilet jag ju är ute efter. Ifall ngn har skrivit en kommentar så visas den vackert om jag utelämnar vilkoret)

/Anders_Sj

<KOD>

...

<%
id = 1
Do While Not Recordset.EOF
id = id + 1
%>

...

<%=Recordset("post1")%>
...
<%=Recordset("post2")%>
...
<%If Len(Recordset("kommentar")) > 0 Then%>
...
<%=Recordset("kommentar")%>
...
<%End If%>

...

<%
Recordset.MoveNext
Loop
%>

</KOD>

Medlem sedan dec. 19998 577 inlägg
#2

Testa att "plocka ut" Recordset("kommentar") till en lokal variabel och sedan kolla längen... och gör samma när du skriver ut den... detta brukar ställa till problem...

------------------
        )|(
       (o o)
-oo0-(_)-0oo-----
webeye.nu

Medlem sedan apr. 20004 inlägg
#3

Visst - bra idé...! Jag har provat det nu (igen) enligt modellen nedan, men det är ngt skumt när jag på det här viset kollar strängen. Så fort jag kollar strängens längd - antingen med en lokal variabel eller direkt från Recordset-objektet så vägrar ASP-motorn därefter visa själva textinnehållet i strängen. Strängens längdvärde med Len-parametern visar den däremot...

Här följer tre tester - ledsen att det blir en långa kodsnuttar, men för att visa vad jag gör redigerar jag inte bort ngt...

/Hälsn Anders-Sj

Test 1 här nedan visar endast strängens längd i siffor

<KOD>

<!-- test 1 start... -->

...

<%
id = 1
Do While Not Recordset.EOF
id = id + 1
strKommentar = Len(Recordset("Kommentar"))
%>

...

<%=Recordset("post1")%>
...
<%=Recordset("post2")%>
...
'testar här visa strängens längd
<%=strKommentar%>
...
<%If strKommentar > 0 Then%>
...
<%=Recordset("Kommentar")%>
...
<%End If%>

...

<%
Recordset.MoveNext
Loop
%>

<!-- test 1 slut -->

</KOD>

Test 2 visar också endast strängens längd i siffor

<KOD>

<!-- test 2 start -->

...

<%
id = 1
Do While Not Recordset.EOF
id = id + 1
strKommentar = Len(Recordset("Kommentar"))
%>

...

<%=Recordset("post1")%>
...
<%=Recordset("post2")%>
...
'testar här visa strängens längd
<%=strKommentar%>
...
<%'If strKommentar > 0 Then%>
...
<%=Recordset("Kommentar")%>
...
<%'End If%>

...

<%
Recordset.MoveNext
Loop
%>

<!-- test 2 slut -->

</KOD>

Test 3 visar vackert strängens textinnehåll - jag har då tagit bort den inledande lokala variabeln som ska plocka ut strängvärdet...

<KOD>

<!-- test 3 start -->

...

<%
id = 1
Do While Not Recordset.EOF
id = id + 1
'strKommentar = Len(Recordset("Kommentar"))
%>

...

<%=Recordset("post1")%>
...
<%=Recordset("post2")%>
...
'testar här visa strängens längd
<%=strKommentar%>
...
<%'If strKommentar > 0 Then%>
...
<%=Recordset("Kommentar")%>
...
<%'End If%>

...

<%
Recordset.MoveNext
Loop
%>

<!-- test 3 slut -->

</KOD>

(Jag har även testat att plocka ut strängens textinnehåll i en lokal variabel men det blir samma resultat...)

Medlem sedan dec. 19998 577 inlägg
#4

Hmm... skumt, testa och kolla så att strkommentar är nummeriskt... eller konvertera till nummeriskt: Cint(strkommentar)... allting ser ju helt rätt ut (om jag inte nu missat nått)...

------------------
        )|(
       (o o)
-oo0-(_)-0oo-----
webeye.nu

Medlem sedan apr. 20004 inlägg
#5

God idé - det har ett numeriskt värde, provade också att konvertera (för säkerhets skull ;-) , men det hjälpte inte. Testade även att använda
'Select Case' - modellen istället för 'If Then' men utan annat resultat. Det verkar som om ASP inte godkänner att jag både kollar strängens längd och visar resultatet på detta sättet. Om jag byter ordningen på variablerna...

strkomm = Recordset("Kommentar")
strkommenterat = Len(Recordset("Kommentar"))

...och därfter väljer att visa resultatet så visar den endast den som står först.

Får nog kolla mer om Recordset-objektet i ngn lämplig bok...

- tack för idébollandet!

/Anders_Sj

[Redigerat av Anders_Sj den 16 maj 2000]

Medlem sedan apr. 20004 inlägg
#6

OK, har löst det nu. Kan vara bra o veta ni som läst tråden.

Databasfältet i Access kan inte ha datatypen PM (65k tecken...) om man testar strängvärde enligt modellen. Är datatypen av vanlig text-typ så funkar ursprungskoden utan problem.

Lite tokigt eftersom antal tecken som tillåts i text-typen endast är 255. Som kommentar till en rapport är det lite för lite utrymme...

Så kommentarfältet sätter jag tillbaka till PM-typ o glömmer det där med kolla strängvärdet...

/Anders_Sj

261 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)