Avatar billede kroger Nybegynder
31. juli 2001 - 03:06 Der er 21 kommentarer og
1 løsning

If..Then..Else problem

Jeg  har prøvet at lave en funktion hvor den skal gå ind og tjekke kolonnen adresse, hvis der ikke er noget i den skal den skrive a, men hvis den indeholder noget skal den skrive b. Problemet er bare at den ikke reagere på det. Alle postrækkerne returneres med b, selvom de indeholder adresse eller ej. Koden jeg har brugt er: (selvfølgelig har jeg oprettet en databaseforbindelse og alt det der)

If (rs(\"adresse\") = \"\")  Then
        Response.Write \"a\"
Else
    Response.Write \"b\"
End If
Avatar billede jelzin101 Praktikant
31. juli 2001 - 03:13 #1
kender ikke asp men du skal nok bruge noget i retning af NULL istedet for \"\"
Avatar billede kroger Nybegynder
31. juli 2001 - 03:17 #2
Det har jeg prøvet, men så ville den kun vise a (glemte at fortælle at hvis jeg skriver if not (rs... skriver den a på alle sammen istedet) lige meget om jeg skriver if eller if not
Avatar billede tdaugaard Nybegynder
31. juli 2001 - 03:25 #3
Prøv:

If (\"\" & rs(\"adresse\") = \"\")  Then
        Response.Write \"a\"
Else
    Response.Write \"b\"
End If
Avatar billede tomsommer Juniormester
31. juli 2001 - 03:25 #4
Hvis du har gjort et felt \"tomt\" ved at inde i access slette feletets indhold, vil det ikke blive anset som \"tomt\".....

Prøv at skrive \"test\" i et felt of derefter udføre

If rs(\"adresse\") = \"test\"  Then
    Response.Write \"a\"
Else
    Response.Write \"b\"
End If
Avatar billede tue Nybegynder
31. juli 2001 - 03:27 #5
if rs(\"adresse\") <> \"\" then
    response.write \"b\"
else
    response.write \"a\"
end if

...eller...

if len(rs(\"adresse\")) > 0 then
    response.write \"a\"
else
    response.write \"b\"
end if
Avatar billede tomsommer Juniormester
31. juli 2001 - 03:31 #6
Hmmm.. interassant tue...

mener du ikke
if len(rs(\"adresse\")) = 0 then
    response.write \"a\"
else
    response.write \"b\"
end if
Avatar billede tue Nybegynder
31. juli 2001 - 03:35 #7
jo, sådan kan man også, men jeg ville nu bare sætte et not ind efter if...

if not len(rs(\"adresse\")) > 0 then
    response.write \"a\"
else
    response.write \"b\"
end if

... eller bare bytte om på a og b :)
Avatar billede zeptic Nybegynder
31. juli 2001 - 08:32 #8
For mig at se, er der ikke noget galt med din if..then..else, så det må ligge i det recordset du bruger. Prøv at udskrive indholdet af rs(\"adresse\") og se om der overhovedet er noget data i din forespørgsel.
Avatar billede kichian Nybegynder
31. juli 2001 - 09:43 #9
Hvis rs(\"adresse\") ikke indeholder noget, så tester man med IsNull(). Dvs.

if IsNull(rs(\"adresse\")) Then
    \' Ingen data
ElseIf len(rs(\"adresse\")) = 0 Then
    \' Indeholder tom streng
Else
    \' Indeholder data
End if

Det er hurtigere at teste med len() end med = \"\" eller <> \"\", da COM-strenge indeholder info om strengens længde
Avatar billede kroger Nybegynder
31. juli 2001 - 18:51 #10
Jeg har prøvet alle foreslagene, men ingen ser ud til at virke. Til at teste det med har jeg 2 recordset, et med indhold i adresse og et uden, men stadig for begge to enten a eller b, her er hele den kode jeg har brugt:

<%
\'Databaseforbindelse
Set objConn = Server.CreateObject(\"ADODB.Connection\")
strConnection = \"DSN=ting;Database=mindata;\"
strConnection = strConnection  & \"UID=ting;PWD=ting;\"
objConn.Open strConnection

\'Hent fra databasen afhængig af værdien id fra URL
strSQL = \"Select * From ba Where kategori like \'%trommer%\' order by navn\"
Set rs = objConn.Execute(strSQL)
\'Indhold der vises
Do

If len(rs(\"adresse\")) = 0 then
        Response.Write \"a\"
Else
    Response.Write \"b\"
End If

rs.Movenext

Loop While Not rs.EOF

Håber det kan lede lidt bedre på sporet

objConn.Close
Set objConn = Nothing
Avatar billede kroger Nybegynder
31. juli 2001 - 18:53 #11
Hov
objConn.Close
Set objConn = nothing, står selvfølgelig før \"håber det kan.....\"
:)
Avatar billede tomsommer Juniormester
31. juli 2001 - 19:16 #12
Har også testet dem her... de virker heller ik...
Avatar billede kichian Nybegynder
01. august 2001 - 09:33 #13
Kan jeg få dig til at teste mit forslag.
Der er 3 udgange a,b,c. Hvis begge dine recordsets giver c, så er det fordi din \"tomme\" adresse er et blanktegn \" \".
Avatar billede kroger Nybegynder
01. august 2001 - 13:30 #14
Kichian> Jeg prøver dit forslag iaften, skal nok rapportere tilbage(sidst jeg prøvede skar jeg din elseif fra, men det jeg prøver den \"fulde\" version\"
Avatar billede kroger Nybegynder
01. august 2001 - 20:11 #15
Kichian > Jeg prøvede dit foreslag, og fik returneret c, det jeg bare ikke forstår er at, for at være på den sikre sidde slettede jeg databasen og oprettede en ny med 2 poster: en med indhold i adresse & en uden, så den uden burde jo være fuldstændig tom.
BTW, så bruger jeg en sql-database
Avatar billede jespernaur Nybegynder
01. august 2001 - 20:30 #16
Se

http://www.eksperten.dk/spm/57260

her demonstreres hvordan man VIRKELIG finder ud af, hvad et felt indeholder

Mvh
Jesper Naur
Avatar billede kroger Nybegynder
01. august 2001 - 20:44 #17
Jesper> Jeg prøvede foreslaget fra 57260, men da jeg prøvede at køre koden:
adresse = rs(\"adresse\")
regEx.Pattern = \"[\\000].*$\"
renadresse = regEx.Replace(adresse, \"\")

sagde den: objektet understøtter ikke denne egenskab eller metode: \'pattern\'
Avatar billede jespernaur Nybegynder
01. august 2001 - 20:58 #18
Min tanke var, at du skulle bruge forslagene undervejs i 57260 til at finde ud af mere præcist, hvad der faktisk står i rs(\"adresse\") - det er først når du ved det, at det (måske) bliver relevant at bruge et regulært udtryk til at lave om på det.

Det var hovedsagelig ideen

  for i = 1 to Len(str)
      Response.Write( \"ASCII-værdi: \" & Asc(Mid(str,i,1)) & \"<br>\" )
  next

jeg tænkte på. Kun for at vi alle kunne blive klogere.
Avatar billede kroger Nybegynder
01. august 2001 - 21:03 #19
Ups, jeg havde glemt at indsætte et =, men efter jeg rettede kom siden frem, men uden resultat den siger stading kun c
Avatar billede kroger Nybegynder
01. august 2001 - 21:20 #20
Sorry, jeg har kun fået 3 timers søvn inat, så det er ikke hjernen der kører for fulde kræft, og får at gøre det endu bedre er min computer lige crashet AAAAAARGGGGGGGHHHHHHHHH, så der går nok lige lidt tid før jeg kan give jer et svar:((
Avatar billede kichian Nybegynder
02. august 2001 - 12:47 #21
Hvis du har et blank-tegn i adressefeltet, så burde følgende gøre det:
if IsNull(rs(\"adresse\")) Then
    \' Ingen data
ElseIf len(Trim(rs(\"adresse\"))) = 0 Then
    \' Indeholder tom streng eller blank-tegn
Else
    \' Indeholder data
End if

Avatar billede kroger Nybegynder
02. august 2001 - 21:26 #22
kichian> Jeg prøvede halvt om halvt dit svar(derfor får du pointene), men bare hvor jeg fik den fra en anden person. Jeg skrev:
if len(trim(rs(\"adresse\"))) = 0 then
Response.write \"a\"
Else
Response.Write \"b\"
End if
  Det fik det til at lykkedes, og får lige at undersøge det nærmere skrev jeg:
Response.Write len(rs(\"adresse\"))
Her fik jeg returneret 50 i alle poster(som er den størrelse jeg har sat på kolonnen), det må derfor betyde at den indeholder \"tomrum\" hvor der ikke står noget, og selvfølgelig har feltet så altid indeholdt en værdi

Ellers tak for de mange besvarelser, dette er et Kongested, med de store personer;)

Stort hilsen
Kroger
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