Avatar billede kalle_mod Nybegynder
21. august 2006 - 21:12 Der er 7 kommentarer og
1 løsning

hjælp ang databasefelt og asp

Jeg har lavet et felt(favoritter) i min tabel(brugere), feltet er af typen tekst og indeholder(når brugeren vælger favoritbilleder) en kommasepareret liste med links til de valgte billeder. Når brugeren oprettes er feltet selvsagt tomt(der indsættes ikke noget), og mit problem er så følgende:

Jeg har koden:
if len(rs("favoritter")) = 0 then
response.write "Ingen favoritbilleder"
else
set rs2 = server.CreateObject("adodb.recordset")
arrFavoritter = split(rs("favoritter"), ",")
for i = 0 to (Ubound(arrFavoritter)-1)
osv.

Mener selv at min if-sætning burde være opfyldt hvis ikke der er noget i feltet?

Anyway så forsøgte jeg selvfølgelig at fejlfinde lidt selv:
if len(rs("favoritter")) > 0 then
response.write "hmm den er større?"
elseif len(rs("favoritter")) = 0 then
response.write "wee 0"
elseif len(rs("favoritter")) < 0 then
response.write "under 0? weird"
elseif len(rs("favoritter")) = NULL then
response.write "længden er NULL"
else
response.write "fuuuuck ingen værdi"
end if

og gæt hvad den skrev?....Jep "Fuuuuck ingen værdi"

Det jeg godt kunne tænke mig at vide er hvordan pokker et felt kan være uden værdi når jeg har tjekket for både NULL og len()=0 :S

Kalle
Avatar billede kalle_mod Nybegynder
21. august 2006 - 21:13 #1
glemte lige fejlmeddelelsen:

Microsoft VBScript runtime  error '800a005e'

Invalid use of Null: 'split'

/besoffen/profil.asp, line 94

og linie 94 er så den linie hvor den splitter mit felt op :)

Kalle
Avatar billede nielle Nybegynder
21. august 2006 - 21:16 #2
Gør sådan her:

arrFavoritter = split("" & rs("favoritter"), ",")
Avatar billede nielle Nybegynder
21. august 2006 - 21:19 #3
Det lille trick:

"" & rs("favoritter")

- forvandler værdien af et tomt felt (NULL) til en streng med længde 0 (""). Det er ikke lige til at se det med menneskeøjne, men det er faktisk to vidt forskellige ting. Split kan ikke lide NULL, og det er det VBScript-fortolkeren brokker sig over. Med "" går det meget bedre.
Avatar billede nielle Nybegynder
21. august 2006 - 21:21 #4
Din lange if-sætning burde i øvrigt have set sådan her ud:

if len(rs("favoritter")) > 0 then
response.write "hmm den er større?"
elseif len(rs("favoritter")) = 0 then
response.write "wee 0"
elseif len(rs("favoritter")) < 0 then
response.write "under 0? weird"
elseif rs("favoritter") = NULL then
response.write "indholdet er NULL"
else
response.write "fuuuuck ingen værdi"
end if
Avatar billede kalle_mod Nybegynder
21. august 2006 - 21:22 #5
tak nielle, du er en skat ;)

men kan du så også fortælle mig hvorfor fortolkeren ikke fanger min elseif len(rs("favoritter")) = NULL ?

har nemlig også forsøgt med if rs("favoritter") = NULL then men det ville den heller ikke

Kalle

ps. Nielle smid et svar
Avatar billede nielle Nybegynder
21. august 2006 - 21:26 #6
Hmm, nu hvor jeg tænker over det, så burde len(rs("favoritter")) faktisk have govet en fejl á la den du fik for Split().

Måske skulle det have været:

if rs("favoritter") Is NULL

- men jeg er ikke sikker.


... og et svar :^)
Avatar billede kalle_mod Nybegynder
21. august 2006 - 21:30 #7
du har nok ret...if rs("favoritter") is NULL then ville efter al sandsynlighed have forhindret problemet...Det er ikke sådan når man har holdt en lidt for lang pause fra asp'en og så starter på et projekt som jeg har gjort :)

Kalle
Avatar billede nielle Nybegynder
21. august 2006 - 21:33 #8
En anden måde at eliminere problemet, ville være at lægge den tomme streng ind i de tomme felter - i stedet for at have værdien NULL stående i dem.
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