webForumDet fria alternativet

Problem med NULL

8 svar · 366 visningar · startad av Fireh

FirehMedlem sedan jan. 2003173 inlägg
#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!

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

Flyttas från Mysql

K@llenMedlem sedan mars 20032 654 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.

FirehMedlem 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!

Engine^Medlem sedan dec. 20002 861 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 ...
Nexus86Medlem sedan okt. 20022 683 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

Engine^Medlem sedan dec. 20002 861 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.

@ndersMedlem sedan juni 200026 914 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.

Engine^Medlem sedan dec. 20002 861 inlägg
Genererad på 392 ms · cache AV · v20260730165559-full.f96bc7eb