26. juli 2003 - 12:27
Der er
16 kommentarer og 1 løsning
Problemer med variabler
Jeg har disse variabler: optidstart = arr(1) optidslut = arr(2) dagoptaget = 3 starttid = 0 sluttid = 1 dag = 1 De er alle tal. Derefter har jeg disse if sætninger: if ((dagoptaget = dag) and (starttid = optidstart)) then ... ... if ((not dagoptaget = dag) and (starttid = optidstart)) then Men disse if sætninger bliver ikke udført. Når jeg skriver ud til skærmen ser det således ud, der hvor disse if sætninger skulle udføres: 1. if sætning: dag = 2 dagoptaget = 2 starttid = 15 optidstart = 15 sluttid = 16 optidslut = 23 2. if sætning: dag 3 dagoptaget = 2 starttid = 15 optidstart = 15 sluttid = 16 optidslut = 23 Hvorfor bliver disse if sætninger ikke udført?? Det virkede fint, da optidstart og optidslut var statiske.
Annonceindlæg fra Barco
Er jeres mødelokaler sikre nok?
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Hele mit script er her. Det udskriver et ugeskema. id = request.querystring("id") set rse = Conn.execute ("select count(id) as antallet from vagtplan") dim vagtarr() antal = Clng(rse("antallet")) redim vagtarr(antal) sql = "select * from vagtplan where brugerid="&id&"" Set rs = Conn.Execute(SQL) 'response.write sql & vbCrLf t = 0 do while not rs.eof vagtarr(t) = "" & rs("dag") & ", " & rs("starttid") & ", " & rs("sluttid") & "" & vbCrLf rs.movenext t = t + 1 loop i = 0 do while i < antal splitvagtarr(i) i = i + 1 loop function splitvagtarr(tal) str = vagtarr(tal) arr = split(str, ",") dagen = arr(0) optidstart = arr(1) optidslut = arr(2) response.write " dag: " & dagen & " start: " & optidstart & " slut: " & optidslut & "<br>" if dagen = "mandag" then dagoptaget = 1 else if dagen = "tirsdag" then dagoptaget = 2 else if dagen = "onsdag" then dagoptaget = 3 else if dagen = "torsdag" then dagoptaget = 4 else if dagen = "fredag" then dagoptaget = 5 else if dagen = "lørdag" then dagoptaget = 6 else if dagen = "søndag" then dagoptaget = 7 end if end if end if end if end if end if end if response.write " dag: " & dagen & " " & dagoptaget &"<br>" response.write "tal " & IsNumeric(optidstart) & " " & IsNumeric(optidslut) & " " & IsNumeric(dagoptaget) & " " & "<br>" starttid = 0 sluttid = 1 dag = 1 rows = optidslut - optidstart response.write "rækker " & rows & " " & IsNumeric(rows) & "<br>" dagsat = false do response.write "<tr bgcolor='#8B1A1A'>" & vbCrLf response.write "<td align='center'><font size='1'>" & starttid & "-" & sluttid & "</font></td>" & vbCrLf do while dag =< 7 if ((dagoptaget = dag) and ((starttid < optidstart) or (starttid >= optidslut))) then response.write "<td align='center'><font size='1'>dag " & dag & " starttid = " & starttid & " optidstart = " & optidstart & " sluttid = " & sluttid & " optidslut = " & optidslut & "<br>Det er den rigtige dag</font></td>" & vbCrLf dag = dag + 1 else if ((dagoptaget = dag) and (starttid = optidstart)) then response.write "<td align='center' rowspan='" & rows & "'><font size='1'>dag " & dag & " starttid = " & starttid & " optidstart = " & optidstart & " sluttid = " & sluttid & " optidslut = " & optidslut & "<br>her skal være optaget</font></td>" & vbCrLf dagsat = true dag = dag + 1 else if ((dagoptaget = dag) and ((starttid > optidstart) or (starttid < optidslut))) then dag = dag + 1 else if ((not dagoptaget = dag) and (starttid = optidstart)) then response.write "<td align='center'><font size='1'>dag " & dag & " starttid = " & starttid & " optidstart = " & optidstart & " sluttid = " & sluttid & " optidslut = " & optidslut & "<br>Det er det rigtige tidspunkt</font></td>" & vbCrLf dag = dag + 1 else if ((not dagoptaget = dag) and (not starttid = optidstart)) then response.write "<td align='center'><font size='1'>dag " & dag & " starttid = " & starttid & " optidstart = " & optidstart & " sluttid = " & sluttid & " optidslut = " & optidslut & "</font></td>" & vbCrLf dag = dag + 1 else dag = dag + 1 end if end if end if end if end if loop dag = 1 dagsat = false starttid = starttid + 1 sluttid = sluttid + 1 response.write "</tr>" & vbCrLf loop while sluttid <> 25 end function %>
din optidstart er et array - du skal huske at referere til det korrekte index.
tilsvarende for optidsslut...
Nu er jeg ikke ASP haj, men det må være noget i stil med if optidstart(1) = starttid Du er naturligvis sikker på, at de er samme type (ex. int), ellers checker du det først.
De er da ikke arrays, de er bare sat lig med indholdet af arrayet. Eller tager jeg fejl?
Dette er ikke arrays: optidstart = arr(1) Man ligger værdien af arrayet arr(1) ind i variablen optidstar, ellers ville der også komme en index fejl på siden. Det er mere sansynligt den tolkdet den ene variable som tal og den anden som tekst og så er 1 ikke lig "1". Så prøv at sætte int omkring: if ((int(dagoptaget) = int(dag)) and (int(starttid) = int( optidstart))) then
Det lettest er nok at sætte Int omkring hvor data ligges i variablene, for ellers skal det gøres ved alle if sætnigerne: optidstart = Int(arr(1)) optidslut = Int(arr(2)) dagoptaget = 3 starttid = 0 sluttid = 1 dag = 1
Det er da pudsigt. Din først løsning virkede ikke, men den anden gjore!?!??!
26. juli 2003 - 12:53
#10
Det nok fordi der flere steder hvor du bruger variablerne hvor de skal være af typen tal. Hvis man gør det i if sætnignen bliver de kun konveretert til tal for den ene if sætning, hvorimod at gøre det i toppe hvor værdien flyttes ind. variable=Int("3434") så bliver variblen af typen tal og det gæder så hele vejen igennem koden.
26. juli 2003 - 12:57
#11
Ok, jeg havde ellers lavet et tjek på om de var tal, og det var de: response.write "tal " & IsNumeric(optidstart) & " " & IsNumeric(optidslut) & " " & IsNumeric(dagoptaget) & " " & "<br>" Udskriver: tal True True True
26. juli 2003 - 12:58
#12
eagleeye> Dough!!! Tror vist ikke at jeg er vågnet helt endnu. Jeg er helt enig!
26. juli 2003 - 13:00
#13
;) Er der nogen af jer der har nod på at hjælpe mig med at lave scriptet om, så det kan udskrive flere tider i samme skema? - Jeg skal nok oprette et nyt spg.
26. juli 2003 - 13:02
#14
jpvj ;) isNumeric tester bare om en streng indeholdet et tal. Den tester ikke om variablen er af typen tal. "6364" er giver ture "344j" giver false med isnumeric. Det bliver nok ikke mig da jeg er på vej ud af døren.
26. juli 2003 - 13:03
#15
Jeg kan nemlig ikke liige finde ud af hvordan det skal gøres. :(
26. juli 2003 - 13:04
#16
Øv. :(
26. juli 2003 - 13:26
#17
Kurser inden for grundlæggende programmering