Avatar billede radiohead Nybegynder
24. november 2006 - 22:56 Der er 23 kommentarer og
1 løsning

betingelse kan ikke blive opfyldt

Hejsa

Jeg har 2 felter i databasen med enten navnet på en billedfil eller et link til et billede.

Hvis ingen af disse findes, skal der udskrives et eller andet.

Problemet er, at jeg simpelthen ikke kan få betingelsen opfyldt..

Her er den:

If rs("imglink") = "" And rs("imglink") = "" Then
Response.Write "noget"

ElseIf rs("imglink") <> "" Then
Response.Write "noget andet"

ElseIf rs("imglink") = "" Then
Response.Write "Noget tredje"

End If




Og det er naturligvis den første jeg ikke kan få opfyldt.. Hvorfor?
Avatar billede radiohead Nybegynder
24. november 2006 - 22:57 #1
hov...

Den sidste ElseIf skulle hedde  rs("img") <> "" Then
Avatar billede radiohead Nybegynder
24. november 2006 - 22:58 #2
Ok, jeg fik lavet en del fejl  der :DD

Sådan her: :)


If rs("imglink") = "" And rs("imglink") = "" Then
Response.Write "noget"

ElseIf rs("img") <> "" Then
Response.Write "noget andet"

ElseIf rs("imglink") <> "" Then
Response.Write "Noget tredje"

End If
Avatar billede jokkejensen Novice
24. november 2006 - 23:52 #3
skal den øverste ikke være med både img og imglink og ikke imglink 2 gange,...

og hvad er det helt præcist du siger ikke virker ?
Avatar billede radiohead Nybegynder
25. november 2006 - 00:15 #4
Jo, det har du ret i... Det står også rigtigt i min kode, men jeg lavede en masse fejl da jeg skrev det herinde :)

sorry :/

Problemet er, at hvis de 2 felter er tomme(img og imglink), sker der intet..

de andre 2 betingelser (elseif'erne) fungerer som de skal
Avatar billede jokkejensen Novice
25. november 2006 - 00:23 #5
Asp er ikke lige mig..

Men hvis :

<%

Dim imglink, img

img = ""
imglink = ""

If img = "" And imglink = "" Then
Response.Write "noget"

ElseIf imglink <> "" Then
Response.Write "noget andet"

ElseIf img <> "" Then
Response.Write "Noget tredje"

End If
%>

Virker...

Så må :

<%

Dim imglink, img

img = rs("img")
imglink = rs("imglink")

If img = "" And imglink = "" Then
Response.Write "noget"

ElseIf imglink <> "" Then
Response.Write "noget andet"

ElseIf img <> "" Then
Response.Write "Noget tredje"

End If
%>

også virke...

Ellers er det noget med dit recordset... jeg kender ikke til vb så godt, men hvis rs("img") ikke indeholder noget... er den så null ?
Avatar billede radiohead Nybegynder
25. november 2006 - 00:34 #6
Det fungerede ikke...

Men jeg aner ikke hvornår et felt er null - er det bare når feltet er tomt eller..?


Skriver lige koden igen, så der ingen fejl er...


If rs("img") = "" And rs("imglink") = "" Then
Response.Write "noget"

ElseIf rs("img") <> "" Then
Response.Write "<img src=" & rs("img") & ">"
Response.Write "noget"

ElseIf rs("imglink") <> "" Then
Response.Write "<img src=" & rs("imglink") & ">
Response.Write "noget"

End If
Avatar billede radiohead Nybegynder
25. november 2006 - 00:35 #7
og mit recordset skulle være i orden. Det virker jo med ElseIf'erne :)
Avatar billede jokkejensen Novice
25. november 2006 - 00:48 #8
nedenstående er jo akkurat det samme.. og den udskriver "noget" og der er img og imglink tomme..

jeg har ikke dit RS tilgængelig.. derfor bør det jo være ligegyldigt om strengen kommer fra rs eller er "hardcoded".. prøv at give img og imglink forskellige værdier i nedenstående.

<%

Dim imglink, img

img = ""
imglink = ""

If img = "" And imglink = "" Then
Response.Write "noget"

ElseIf imglink <> "" Then
Response.Write "noget andet"

ElseIf img <> "" Then
Response.Write "Noget tredje"

End If
%>
Avatar billede jokkejensen Novice
25. november 2006 - 00:52 #9
prøv ex før det hele at udskrive dem fra rs

Response.Write("imglink:|" & rs("imglink") & "|")
Response.Write("img:|" & rs("img") & "|")

så kan du lettere se om det er hvad du forventer.
Avatar billede radiohead Nybegynder
25. november 2006 - 00:56 #10
Hvis jeg "hardcoder" dem, virker det fint...

Prøver lige det andet
Avatar billede radiohead Nybegynder
25. november 2006 - 01:00 #11
Der udskriver den intet, som forventet...
Avatar billede jokkejensen Novice
25. november 2006 - 01:03 #12
hmmm det er sku underligt :)

Prøv :

<%

Dim imglink, img
img = ""
imglink = img
img = rs("img")
imglink = rs("imglink")

If img = "" And imglink = "" Then
Response.Write "noget"

ElseIf imglink <> "" Then
Response.Write "noget andet"

ElseIf img <> "" Then
Response.Write "Noget tredje"

End If
%>
Avatar billede radiohead Nybegynder
25. november 2006 - 01:05 #13
Vi er ude i det helt store debugging :D

Prøver lige :)
Avatar billede radiohead Nybegynder
25. november 2006 - 01:10 #14
Det giver samme resultat..
Den udskriver ikke "noget"

Jeg kigger det lige efter i sømmene... Det er jo dybt underligt
Avatar billede jokkejensen Novice
25. november 2006 - 01:16 #15
Det er godt nok den helt store gætteleg..

Men læste man kunne :

<%

Dim imglink, img
img = rs("img") & ""
imglink = rs("imglink") & ""

If img = "" And imglink = "" Then
Response.Write "noget"

ElseIf imglink <> "" Then
Response.Write "noget andet"

ElseIf img <> "" Then
Response.Write "Noget tredje"

End If
%>

Det skulle parse eventuelle null værdier fra RS til tomme strenge
Avatar billede radiohead Nybegynder
25. november 2006 - 01:25 #16
Ehh.. jow det virker sgu!

Har du en forklaring for jeg er sgu ok forvirret - Jeg havde checket databasen 700 gange for at se om felterne virkelig var tomme...
Hvordan dælen kan de så være at det virker når man tilføjer "INGENTING" efter udtrækket...!? :)
Avatar billede radiohead Nybegynder
25. november 2006 - 01:27 #17
Burde det så ikke have virket hvis jeg skrev
If rs("img") = null And rs("imglink") = null Then


?
Avatar billede jokkejensen Novice
25. november 2006 - 01:35 #18
jo ..

som sagt kan jeg ikke så godt huske den smule vb jeg kunne engang..

Hvis der ikke står noget i databasen bliver rs("etellerandet") == null

Men hvis der står en tom streng i databasen, måtte man forvente den blev ""

Det jeg så gør er at sige

img = null + ""; som giver ""

skulle rs("img") være ex billede.jpg bliver det

img = billede.jpg + "" som giver "billede.jpg"

Metoden skulle altså være bulletproof... men lad gerne spørgsmålet stå åbent, det kan være asp har en endnu bedre mulighed for at tjekke dette
Avatar billede jokkejensen Novice
25. november 2006 - 01:38 #19
jeg har tyvstjålet denne funktion fra et site

Den skulle teste om en streng er tom..

Så bliver det noget ala :
(men ser ikke hvorfor den anden ikke kan gå :) )


<%
Function IsBlank(ByRef TempVar)

    'by default, assume it's not blank
    IsBlank = False

    'now check by variable type
    Select Case VarType(TempVar)
   
        'Empty & Null
        Case 0, 1
            IsBlank = True
       
        'String
        Case 8
            If Len(TempVar) = 0 Then
                IsBlank = True
            End If
           
        'Object
        Case 9
            tmpType = TypeName(TempVar)
            If (tmpType = "Nothing") Or (tmpType = "Empty") Then
                IsBlank = True
            End If
       
        'Array
        Case 8192, 8204, 8209
            'does it have at least one element?
            If UBound(TempVar) = -1 Then
                IsBlank = True
            End If
    End Select
End Function


Dim imglink, img
img = rs("img")
imglink = rs("imglink")

If isBlank(img) And isBlank(imglink) Then
Response.Write "noget"

ElseIf imglink <> "" Then
Response.Write "noget andet"

ElseIf img <> "" Then
Response.Write "Noget tredje"

End If
%>
Avatar billede radiohead Nybegynder
25. november 2006 - 01:49 #20
ok, takker for ekstra info...

Undrer mig over at If rs("img") = null ikke virkede. :?

Det virker jo nu, men min nysgerrighed kan ikke lade det ligge, så...
I mine tidligere projekter, har jeg altid brugt "", og det har altid virket. Databasen har jeg bygget op på samme måde som altid før... Hvordan kan det så være, at et felt pludselig er blevet Null? Hvad kan jeg have gjort anderledes denne gang? hmmm.. Har du et bud?

Det er en access database, og jeg har som sagt opbygget den som jeg altid har gjort før...
Avatar billede radiohead Nybegynder
25. november 2006 - 01:51 #21
ggid jeg selv havde kompetancen til at lave den slags Functions :D heh
Avatar billede jokkejensen Novice
25. november 2006 - 12:24 #22
du skal tage at skifte til asp.net...

Det bruger jeg, og er 1000 gange lettere for os "amatører" ... du skal dog lige have sat dig nogenlunde ind i object orienteret programmering, noget jeg selv døjer med, men har lært en bitte smule..

Nu går det 1000 gange hurtigere at lave ordentlig kode...

ex i asp.net er det bare !String.IsNullOrEmpty() så tester den selv, og med VS/V webdeveloper, er der intellicense, så man skal ikke slå op konstant hvis det er noget man er i tvivl om, den foreslår selv sådanne.
Avatar billede radiohead Nybegynder
25. november 2006 - 13:51 #23
Super, takker... Jeg skal også snart have undervisning i .NET - Bliver fedest :)
Avatar billede ldanielsen Nybegynder
27. november 2006 - 12:41 #24
Hvis du nu sikrede dig at de tomme felter ikke er NULL, men indeholder en tom streng, "", så ville du ikke have problemet. Sæt default værdien i felterne til "", og forbyd NULL.

Man kan ikke sige Noget = NULL, for NULL er ikke lig noget som helst, brug Noget IS NULL i stedet
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