webForumDet fria alternativet

Fel på ifsats?

ASP

25 svar · 451 visningar · startad av Inferis

Medlem sedan sep. 2000667 inlägg
Frågan#1

Varför fungerar inte följande kod? Även om alla poster är tomma så skrivs ändå Felutskrift ut...

Kod:

<% if Recset("1") = "0" AND Recset("2") = "" AND Recset("3") = "" AND Recset("4") = "" AND Recset("5") = "0" Then
response.write "Felutskrift"
else %>
Medlem sedan dec. 20003 563 inlägg
#2

Du får nog skriva ut datatyper för samtliga kolumner samt koden du använder för att generera ovanstående.

Medlem sedan sep. 2000667 inlägg
#3

Att köra dem en och en fungerar. Det är när man använder AND som det inte fungerar.

Medlem sedan sep. 2000667 inlägg
#4
set Recset= Connect.execute ("SELECT * FROM [tabell] Where [id] = '"& request.querystring("id") &"'")

Ett fält är av typen tal. Har bara värden 0 eller 1.

Medlem sedan nov. 20017 144 inlägg
#5

Är "id" tal, så skall du ta bort enkelfnuttarna runt ReQuest.QueryString("id")

Medlem sedan sep. 2000667 inlägg
#6

Bara skrev koden förenklad.
Den fungerar att hämta och skriva ut osv.
Det är bara när man använder AND i ifsatsen som det inte fungerar.

Medlem sedan sep. 2000667 inlägg
#7

Förenklat:

if rs("1") = "" AND rs("2") = 0 Then
 kör varken html eller kod
else
 kör html och kod
end if

Trots att rs("1") är tom och rs("2") (tal) är 0 så kör den kod och html.

Medlem sedan juni 200032 967 inlägg
#8

Tom? Är det inte null då? Null != "".

Medlem sedan sep. 2000667 inlägg
#9

Om man öppnar Access så är Rs1 blank och Rs2 har en nolla.

Medlem sedan juni 200032 967 inlägg
#10

Vad är fältet 1 för datatyp då? I talfält kan inte strängar (nej, inte ens tomma strängar) lagras, och då är värdet null.

If Isnull(rs("1")) and Clng(rs("2")) = 0 then
Medlem sedan sep. 2000667 inlägg
#11

@nders:
Din kod gjorde precis samma sak som min.

Medlem sedan sep. 2000667 inlägg
#12

Fält 1 är text och fält 2 är tal.

Medlem sedan juni 200032 967 inlägg
#13

Okej. Du är säker på att det inte sparats något mellanslag eller så? Prova att skriva ut dess värden, så du ser vad det är du jämför med.

Response.write "¤" & rs("1") & "¤" & rs("2")

Mvh

Medlem sedan sep. 2000667 inlägg
#14

Fick ¤0¤

(skrev ut fältet tal först)

Medlem sedan dec. 20003 563 inlägg
#15
If len([b]trim[/b](rs("1"))) = 0 and Clng(rs("2")) = 0 then

?

Medlem sedan juni 200032 967 inlägg
#16

Anledningen till soltecknen var att du skulle ha textfältet där för att se om där skräpade mellanslag.

Medlem sedan sep. 2000667 inlägg
#17

Hm. Det blev mellanslag.

Medlem sedan sep. 2000667 inlägg
#18

Skrev fel...

Medlem sedan juni 200032 967 inlägg
#19

Då får du se till att antingen inte lagra bara mellanslag i fältet, eller så får du använda Trim().

If Trim(rs("1")) = "" and rs("2") = "0" then
Medlem sedan juni 200032 967 inlägg
#20

Det verkar som att du behöver lite bättre kontroll på vad du lagrar i tabellen. Defaultvärde 0 på talfälten kanske kunde passa, och något som ser till att inte endast mellanslag lagras i ett textfält.

Mvh

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