Avatar billede axkris Nybegynder
01. september 2004 - 10:41 Der er 6 kommentarer og
1 løsning

Invalid procedure call or argument: 'string'

Hej

Jeg har følgende funktion, som har virket fint i gennem lang tid, men pludselig i dag ville den ikke mere (og jeg har ikke ændret på koden overhovedet).

<%
function TimeCalc(Display, StartTime, FinishTime)
   
    response.write "<br>StartTime: " & StartTime
    response.write "<br>FinishTime: " & FinishTime

    Dim diff, mins, hours
    diff = datediff("n",StartTime,FinishTime)
   
    ' set the hours ignoring the remaining fraction
    hours = int(diff / 60)
    response.write "<br>hours: " & hours

    ' set the minutes by using the remaining fraction and multiplying by 60 i.e., .5 * 60 = 30
    mins = round(60*(diff / 60 - hours),0)
    response.write "<br>mins: " & mins
   
    'hours = string(2-len(hours),"0") & hours
    '*****************her chasher den!
    response.end
   
    mins = string(2-len(mins),"0") & mins

    ' how do we want to return the calculation..?
   
    select case lcase(Display)
        case "screen"
            TimeCalc = hours & " hours and " & mins & " minutes"
          case "database"
            TimeCalc = hours & mins
    end select
   
end function

%>

Fejl:
Invalid procedure call or argument: 'string'

Udskrivning af værdier:
StartTime: 26-08-2004 13:14:13
FinishTime: 01-09-2004 10:39:06
hours: 141
mins: 25
Avatar billede erikjacobsen Ekspert
01. september 2004 - 12:35 #1
Jah, denne

response.write  string(20,"0")

virker fint, men:

response.write  string(-1,"0")

giver

  Microsoft VBScript runtime  error '800a0005'

  Invalid procedure call or argument: 'string'

Kan du gætte hvorfor?  *g* Dine timer er nok blevet 3-cifrede.
Avatar billede axkris Nybegynder
01. september 2004 - 12:39 #2
Nåå ok, men kan du så ikke hjælpe mig, så jeg kan bruge funktionen til at udregne, hvor mange timer der er mellem to datoer (selvom time-tallet er blevet 3-cifret)?
Avatar billede erikjacobsen Ekspert
01. september 2004 - 12:45 #3
Men det er vel kun formatteringen, der er problemet. Hvor ville du gerne have
stående  "03 hours and 05 minutes", og ikke bare "3 hours and 5 minutes" ?
Mit forslag er vel blot at fjerne linien.
Avatar billede axkris Nybegynder
01. september 2004 - 12:47 #4
ok, takker :-)

Tryk svar :-)
Avatar billede axkris Nybegynder
01. september 2004 - 12:48 #5
Funktionen er nu:

<%
function TimeCalc(Display, StartTime, FinishTime)
   
    Dim diff, mins, hours
    diff = datediff("n",StartTime,FinishTime)
   
    ' set the hours ignoring the remaining fraction
    hours = int(diff / 60)

    ' set the minutes by using the remaining fraction and multiplying by 60 i.e., .5 * 60 = 30
    mins = round(60*(diff / 60 - hours),0)
    mins = string(2-len(mins),"0") & mins

    ' how do we want to return the calculation..?
   
    select case lcase(Display)
        case "screen"
            TimeCalc = hours & " hours and " & mins & " minutes"
          case "database"
            TimeCalc = hours & mins
    end select
   
end function

%>
Avatar billede erikjacobsen Ekspert
01. september 2004 - 12:49 #6
Ellers tak, men jeg samler slet ikke på point.

Jeg kan se, at hvis du putter den i databasen med

  case "database"
            TimeCalc = hours & mins

skal du kunne skelne mellem timer og minutter. Her skal du nok skrive minutterne
som "05" og ikke som "5".

Svar selv, accepter eget svar.
Avatar billede axkris Nybegynder
01. september 2004 - 12:51 #7
Takker :-D
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