webForumDet fria alternativet

Problem med NULL

ASP

8 svar · 368 visningar · startad av Fireh

Medlem sedan jan. 2003173 inlägg
Frågan#1

Nu tänker jag en gång för alla gå till botten med detta som irriterar mig så extremt. Om jag inte har något skrivet i ett fält, så har den värdet NULL. Bra så långt... När jag däremot behöver läsa ut värdet i fältet och kolla om det är NULL eller om det innehåller data, så blir det knäppt. Jag kör följande kod:

If rs1("Dit_kl") <> "" Then Dit_kl = rs1("Dit_kl") Else Dit_kl="Inget"

Det genererar följande fel oavsett om det är NULL eller inte:

(0x80020009)
Undantag inträffade.

Detta har jag alltid avhjälpt genom att läsa in värdet i en variabel först, för av nån korkad anledning går det inte att läsa samma värde 2 gånger. Problemet kommer då när man läser in värdet i variabeln Dit_kl och det är NULL. Då vet inte jag hur man kollar om det är NULL. För om jag kör detta:

If rs1("Dit_kl") =  "" Then Nåt Else Nåt

Så kör den koden efter Else. Dvs det är NULL, men "" är inte NULL, men hur kollar jag om det är NULL?

Tack på förhand!

Medlem sedan dec. 200012 464 inlägg
#2
Dit_kl = rs("dit_kl")
if isnull(Dit_kl) then

Flyttas från Mysql

Medlem sedan mars 20032 667 inlägg
#3

En tom sträng är inte det samma som null. Du kan kolla det med en funktion i vb-script:

if isnull(rs1("Dit_kl")) then 
    ' jo, den var null
end if

eller direkt i sql-frågan

select * from tabellen where Dit_kl is not null

Hämtar alla poster där Dit_kl inte är null.

Medlem sedan jan. 2003173 inlägg
#4

Tack båda två!
Att plocka ut direkt i frågan kunde jag.
Men här är det inte aktuellt att göra det.

Det verkar fungera.
Tackar!

Medlem sedan dec. 20003 887 inlägg
#5

VBScript och null är irriterande. null finns inte i VBS.

Med tanke på den If-sats du hade i början så är det alltid "bättre" (snabbare) att undersöka om en sträng är tom med

If Len([i]sträng[/i]) = 0 Then ...
Medlem sedan okt. 20023 030 inlägg
#6

Engine^ skrev:

VBScript och null är irriterande. null finns inte i VBS.

Klart det finns. Det heter bara inte null. För strängar heter det vbNullString och för objekt Nothing.

Ex:

If [b][i]sträng[/i][/b] = vbNullString Then        ' Samma sak som [i]If sträng = "" Then[/i]
	' Strängen är tom
End If

Dim FS
Set FS = CreateObject("Scripting.FileSystemObject")

If FS Is Nothing Then
	' FS är av typen Object men inte satt som referens till något
End If

Set FS = Nothing

r/ Lite kommentarer

Medlem sedan dec. 20003 887 inlägg
#7

Jag håller väl med dig en aning...

If sträng = vbNullString

Är detsamma som

If Len(sträng) = 0

Jag vidhåller att null inte finns i VBS. Nu menar jag inte att det inte sker på samma sätt i andra språk utan mer att VBS är aningen tvetydigt på den punkten.

Medlem sedan juni 200032 967 inlägg
#8

Engine^, jag förstår inte riktigt vad du menar.

strNull = Null
If IsNull(strNull) then response.write "Jo, den är null?"

Len(Null) är dessutom inte noll.

Medlem sedan dec. 20003 887 inlägg
261 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)