Avatar billede killstun Nybegynder
06. august 2005 - 17:20 Der er 21 kommentarer og
1 løsning

If sætning virker ikke

Jeg har denne if sætning:

if rs("etellerandet") = "" then
bla bla
end if

- men jeg kan ikke få den til at virke. Jeg skal bruge den til at vise "bla bla" hvis kolonnen "etellerandet" er tom. Hvad skriver jeg forkert?
Avatar billede busschou Praktikant
06. august 2005 - 17:24 #1
du skriver ikke noget forkert i din if sætning
Men det er muligt rs("etellerandet") ikke er tom?
Avatar billede busschou Praktikant
06. august 2005 - 17:25 #2
du kan jo altid teste det ved
--
if rs("etellerandet") = "" then
  response.write "tom"
else
  response.write "ikke tom"
end if
Avatar billede softspot Forsker
06. august 2005 - 17:27 #3
Det kan være den f.eks. indeholder NULL :)
Avatar billede killstun Nybegynder
06. august 2005 - 17:28 #4
Ja, ok. Syntes heller ikke jeg kunne se hvad jeg skrev forkert. Må lige rode lidt med det og se om jeg kan finde fejlen. Ved nemlig at den er tom, og har også prøvet med if rs("etellerandet") = " " then....
Avatar billede nielle Nybegynder
06. august 2005 - 17:30 #5
Dette lille hack plejer at klare både NULL og "":

if "" & rs("etellerandet") = "" then
  response.write "tom"
else
  response.write "ikke tom"
end if
Avatar billede karstenl Nybegynder
06. august 2005 - 17:34 #6
Skal IF sætningen ikke se sådan ud?

<% if rs("etellerandet") <> "" then %>
pølse
<%End If%>
Avatar billede softspot Forsker
06. august 2005 - 17:35 #7
karstenl >> det kan den også - hvis du vil skifte mellem script og html... :)
Avatar billede karstenl Nybegynder
06. august 2005 - 17:39 #8
softspot

ohh ok.. jamen så lærte jeg også noget i dag :)
Avatar billede busschou Praktikant
06. august 2005 - 17:49 #9
Altså jeg tror jeg skal lære at tænke normalt
Er jeg den eneste som tænker at hvis
rs("Noget") = ""
Så er den tom og hvis
rs("Noget") = Null
Så er den ikke defineret
sådan er min tankegang :o)
Avatar billede softspot Forsker
06. august 2005 - 18:09 #10
Jeg har et lidt ambivalent forhold til tom i denne sammenhæng, for på den ene side er det jo svært at argumentere for at "" ikke er en tom streng, men på den anden side ser jeg strengværdien "" som en parallel til den numeriske værdi 0 og den opfatter du vel ikke som tom... eller hvad? Principielt er jeg uenig i den betragtning at "" betyder tom. Det er for mig blot en streng, som tilfældigvis ikke har noget tekstindhold (men det er dog stadig en valid information af typen streng med længden 0).

Et andet aspekt jeg tager i betragtning når emnet "tom variabel" tages op, er den kontekst hvori spørgsmålet bliver stillet. I dette tilfælde er det i forbindelse med databaser hvor en anden mulighed for et felt er at det er NULL/udefineret, derfor nævner jeg også dette som en mulighed, mhp. at fremme fejlsøgningsprocessen (jeg har lært at man skal opstille alle muligheder, forfølge de mest sandsynlige først og gradvist be- eller afkræfte dem - hvis man ikke har andre muligheder, kan man ligeså godt forfølge dem der virker usandsynlige, men dog stadig mulige...).

Jeg ved det går hen og bliver en lille smule akademisk og derfor ønsker jeg egentlig ikke, at gå ind i en dybere (evt. ophedet) debat om hvorvidt det ene eller det andet er korrekt, men siden du spørger vil jeg blot give min egen holdning til kende :)
Avatar billede busschou Praktikant
06. august 2005 - 18:16 #11
jeg vil gerne give dig ret "" er en tom streng, men asp giver jo ikke en type fejl hvis man sammenligner
if 0 = "" then
Så giver den blot false
Derfor så synes jeg at det er en ok sammenligning sproget taget i betragtning
Men jeps nok om det :o) hehe
Avatar billede softspot Forsker
07. august 2005 - 00:05 #12
at 0 = "" giver false skyldes jo at VBScript konverterer 0 til "0" og dermed er de jo ikke ens. I et typestærkt sprog som ikke lavede konverteringer bag din ryg, ville dette givetvis resultere i en type mismatch...
Avatar billede softspot Forsker
07. august 2005 - 00:05 #13
Men som du siger "...sproget taget i betragtning"...
Avatar billede killstun Nybegynder
07. august 2005 - 02:19 #14
Hehe, ok tror jeg stod lidt af ved linieeee .... 0 :-) Fandt ud af at det nok var null som jeg skulle have fat i. Troede bare at det var det samme at skrive "" og null. Men det har jeg nu fået bekræftet (tror lige jeg skal læse det en gang til for at følge jer).

Normalt indføre jeg data ved indsættelse på alle felter, uanset om jeg skriver noget i formen ell. ej. Men eftersom jeg har rodet meget med mine asp filer i denne uge, glemte jeg at jeg ikke havde indført "etellerandet" i min insert sætning. Derfor blev der ikke indført "" og derfor var feltet helt tomt og ikke næsten tomt???? :-D
Avatar billede nielle Nybegynder
07. august 2005 - 08:08 #15
Som sagt kan dette lille trick klare begge muligheder:

if "" & rs("etellerandet") = "" then

- men det er så spørgsmålet om man burde gøre den slags ting.

Under alle omstændigheder, er det cool at du har fundet ud af at "" og NULL ikke er det samme. For den er der mange som roder rundt med. :^)

PS: Det rigtige tjek er noget i stil med:

if rs("etellerandet") = Nothing Or rs("etellerandet") = "" then
Avatar billede busschou Praktikant
07. august 2005 - 08:28 #16
Man kan altid sætte sig op og sige hvad er mest "korrekt"
Det er rigtigt at de fleste sprog ville give en type fejl eller en anden fejl
Men i og med asp selv konverterer, så kan man lige så godt benytte det nemmeste synes jeg
if "" & rs("etellerandet") = "" then
burde virke fordi asp konverterer værdien til en streng uanset om den er Null eller 0 eller Array(1,2,3) eller hvad den er
if rs("etellerandet") = Nothing Or rs("etellerandet") = ""
Kunne man måske så sige var mere korrekt, men hvis det er et array er det jo ikke nothing, og det er heller ikke en streng, så igen "snyder" asp
if IsNull(rs("etellerandet")) Or rs("etellerandet") = ""
Må derfor være "den rigtige løsning" til at finde ud af om rs("etellerandet") enten er Null eller en tom streng
---
Men ja, meningerne er nok delte ;o)
I princippet mener jeg at alt der virker efter hensigten kan man ikke snakke om ikke er korrekt
Avatar billede nielle Nybegynder
07. august 2005 - 10:40 #17
Når bare man ved *hvorfor* et givet hack virker korrekt - så er den såmæn helt fin for mig. Det er forståelsen der er det vigtige.
Avatar billede busschou Praktikant
07. august 2005 - 10:50 #18
jepper :o)
Avatar billede mnoer Nybegynder
08. august 2005 - 14:08 #19
man kan også bruge
if len(rs("etellerandet")) > 0 then
bla bla
end if

og hvis man vil teste om nuger er NULL kan funktionen isNull(detDuVilTeste) jo bruges :)
Avatar billede killstun Nybegynder
10. august 2005 - 16:29 #20
lukker...
Avatar billede busschou Praktikant
10. august 2005 - 18:24 #21
hvad var løsningen ???
Avatar billede mnoer Nybegynder
10. august 2005 - 19:15 #22
fik du ikke besvaret dit spørgsmål?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester