Avatar billede avt Nybegynder
05. juli 2002 - 10:17 Der er 22 kommentarer og
1 løsning

select case

jeg har denne select-sætning ...

Select Case varDay
Case 0
Response.Write("(i dag) ")
Case 1
Response.Write("(i går) ")
Case 2
Response.Write("(i forgårs) ")
Case 3
Response.Write("(3 dage siden) ")
Case Else
Response.Write "(" & varDay & " dage siden)"
End Select

hvordan laver jeg en case - hvis talet er større end 3?
(kan man ikke lave noget i stil < 3?)
Avatar billede dk_akj Nybegynder
05. juli 2002 - 10:20 #1
case is > 3

//akj
Avatar billede avt Nybegynder
05. juli 2002 - 10:25 #2
Microsoft VBScript compilation error '800a03ea'

Syntax error

/alpha/datediff.asp, line 12

case is > 3
-----^
Avatar billede a-torsten Nybegynder
05. juli 2002 - 10:28 #3
if varDay > 3 then
    varDay = 4
end if


Select Case varDay
Case 0
Response.Write("(i dag) ")
Case 1
Response.Write("(i går) ")
Case 2
Response.Write("(i forgårs) ")
Case 3
Response.Write("(3 dage siden) ")
Case 4
Response.Write("(Bla Bla Bla....) ")
Case Else
Response.Write "(" & varDay & " dage siden)"
End Select
Avatar billede avt Nybegynder
05. juli 2002 - 10:38 #4
>>a-torsten - jeg vil bruge funktionen til at vise hvor mange dage der er gået... hvis jeg indsætter if-sætningen så vil der næsten altid være gået 4 dage ... (ved godt at det er mig der har formuleret mig dårligt)
Avatar billede avt Nybegynder
05. juli 2002 - 10:40 #5
Jeg har en dato - som jeg gerne vil vise hvor dage der er til (negativt tal - deraf min "else" sætning) og med hvor mange dage datoen er overskredet... (positivt tal) - tror desværre jeg er nødt til at lave min "select" sætning om til en helvedes masse if-sætninger
Avatar billede dk_akj Nybegynder
05. juli 2002 - 10:41 #6
Jeg forstår squ ikke hvorfor det ikke virker med "case is > 3", roder lige lidt med det.

//akj
Avatar billede avt Nybegynder
05. juli 2002 - 10:41 #7
Troede bare at der måske var en nem måde som f.eks tidligere nævnte "case is >3"
Avatar billede dk_akj Nybegynder
05. juli 2002 - 10:45 #8
Den her syntax her virker hos mig

Dim Number
Number = 9
Select Case True
Case Number = 8
  Response.Write "otte"
Case Number > 8
  Response.Write "større end 8"
Case Else
  Response.Write "et andet tal"
End Select

//akj
Avatar billede dk_akj Nybegynder
05. juli 2002 - 10:48 #9
Din select kommer så til at se sådan her ud:

Dim varDay

varday = 7
'varday = 3

Select Case varDay
    Case 0
        Response.Write("(i dag) ")
    Case 1
        Response.Write("(i går) ")
    Case 2
        Response.Write("(i forgårs) ")
    Case 3
        Response.Write("(3 dage siden) ")
    case varday > 3
        Response.Write("(mere end 3 dage siden) ")
    Case Else
        Response.Write "(" & varDay & " dage siden)"
End Select

//akj
Avatar billede avt Nybegynder
05. juli 2002 - 11:00 #10
Dk_akj >> jeg kegler lidt i det nu ... (det er stadig tidligt om morgen)
kan du tilpasse min kode ?

<%
Sub Diff(strDate)
    Dim varDay
    varDay = DateDiff("d", (strDate), Now)

Select Case varDay
    Case 0
        Response.Write("(i dag) ")
    Case 1
        Response.Write("(i går) ")
    Case 2
        Response.Write("(i forgårs) ")
    Case 3
        Response.Write("(3 dage siden) ")
    Case varDay > 3
        Response.Write("(mere end 3 dage siden) ")
    Case Else
        Response.Write "(" & varDay & " dage siden)"
End Select

End Sub
%>
Avatar billede dk_akj Nybegynder
05. juli 2002 - 11:07 #11
Hurtigt lavet og IKKE testet, er tilbage om ½ time.

//akj

Sub Diff(strDate)
    Dim varDay
    varDay = DateDiff("d", (strDate), Now)
   
    Select Case varDay
        Case 0
            Response.Write("(i dag) ")
        Case 1
            Response.Write("(i går) ")
        Case 2
            Response.Write("(i forgårs) ")
        Case 3
            Response.Write("(3 dage siden) ")
        case varday > 3
            Response.Write("(mere end 3 dage siden) ")
        Case Else
            Response.Write "(" & varDay & " dage siden)"
    End Select
End Sub
Avatar billede avt Nybegynder
05. juli 2002 - 11:16 #12
hmm - den bliver ved med at vælge min "else" case.
ud fra Response.Write "(" & varDay & " dage siden)"
kan jeg se at varDay er 371  ... weird ... jeg er sgu ved at give op *G*
Avatar billede dk_akj Nybegynder
05. juli 2002 - 11:44 #13
Parameter til funktionen er en streng i formattet dd-mm-yyyy

//akj


Sub Diff(strDate)
    ' dansk locale  - slet den bare hvis du har angivet den et andet sted
    Session.LCID = 1030

    Dim varDay
    olddate = datevalue(str_date)
    varDay = DateDiff("d", olddate, Now)

   
    Select Case varDay
        Case 0
            Response.Write("(i dag) ")
        Case 1
            Response.Write("(i går) ")
        Case 2
            Response.Write("(i forgårs) ")
        Case 3
            Response.Write("(3 dage siden) ")
        case varday > 3
            Response.Write("(mere end 3 dage siden) ")
        Case Else
            Response.Write "(" & varDay & " dage siden)"
    End Select
end sub
Avatar billede avt Nybegynder
05. juli 2002 - 11:50 #14
Microsoft VBScript runtime error '800a000d'

Type mismatch: 'datevalue'

/alpha/datediff.asp, line 7

line 7 : olddate = datevalue(str_date)
Avatar billede dk_akj Nybegynder
05. juli 2002 - 11:52 #15
hvaaaad . Hvilket OS kører du på ??


//akj
Avatar billede avt Nybegynder
05. juli 2002 - 11:53 #16
mit format er YYYY-MM-DD - men det kan jeg desværre ikke lave om på
Avatar billede avt Nybegynder
05. juli 2002 - 11:54 #17
det er en gammel nt4 server - med nt4 / 2000 klienter
Avatar billede dk_akj Nybegynder
05. juli 2002 - 11:56 #18
ahh - fejlen fundet

olddate = datevalue(strdate)

der havde sneget dig en "_" med i strdate

//akj
Avatar billede dk_akj Nybegynder
05. juli 2002 - 11:58 #19
ang format så skal du bare fjerne "Session.LCID = 1030" fra sub'en

//akj
Avatar billede avt Nybegynder
05. juli 2002 - 12:01 #20
Det fjernede så fejlen *G* men den vælger stadig "else" sætningen
Avatar billede dk_akj Nybegynder
05. juli 2002 - 12:15 #21
prøv at erstate select delen med dette:
    Select Case true
        Case varDay = 0
            Response.Write("(i dag) ")
        Case varDay = 1
            Response.Write("(i går) ")
        Case varDay = 2
            Response.Write("(i forgårs) ")
        Case varDay = 3
            Response.Write("(3 dage siden) ")
        Case varday > 3
            Response.Write("(mere end 3 dage siden) ")
        Case Else
            Response.Write "(" & varDay & " dage siden - else sætning)"
    End Select
Avatar billede avt Nybegynder
05. juli 2002 - 15:21 #22
det virkede - tak
(som tak for hjælpen - smed jeg lidt flere point i puljen)
Avatar billede dk_akj Nybegynder
05. juli 2002 - 16:27 #23
Det behøvede du skam ikke. Men tak.

//akj - der nu har sommerferie ;o)
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

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