19. juni 2001 - 23:23Der er
6 kommentarer og 1 løsning
Do while - Loop
Jeg har følgende \"lille\" kontrol af dato\'er og klokkeslæt. Mit problem er, at rutinen kun kontrollere på den første post i databasen. Hvor skal jeg indsætte en - Do While rs.eof - , samt - Loop - før alle posterne i databasen bliver kontrolleret.
<%
set Conn =Server.CreateObject(\"ADODB.Connection\") Conn.Open \"datokontrol\"
SQLstmt = \"SELECT * FROM dato\" Set rs = conn.Execute(SQLstmt)
If DateDiff(\"d\", Ny_Slut_Dato, start_dato) > 0 Then \'Ny dato slutter før de andre starter (ændrer til >= for at få overlap) overlap_dato = False Else If DateDiff(\"d\", slut_dato, Ny_Start_Dato) > 0 Then \'Ny dato starter efter de andre slutter overlap_dato = False Else
overlap_dato = True End If End If If overlap_dato = False Then
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Når jeg indsætter det som du (sbm) siger for jeg følgende fejlmeddelelse:
error \'ASP 0113\' Script timed out
/datokontrol.asp
The maximum amount of time for a script to execute was exceeded. You can change this limit by specifying a new value for the property Server.ScriptTimeOut or by changing the value in the IIS administration tools.
Hvad betyder dette, og hvad skal jeg gøre for at undgå det.
Hi hi... Der er et lille problem med denne del af koden:
If overlap_kl = False Then rs.movenext Else response.write \"Lokalet er optaget i dette tidsrum, prøv noget andet.\" End If
Hvis du kommer til en situation hvor overlap_kl = true, vil den gå ned i ELSE delen, og vil derfor ALDRIG KOMME VIDERE I DET RECORDSET. Den kører på den samme række igen og igen og igen... Jeg kan ikke lige gennemskue hvorfor du kun vil bevæge dig videre til næste række når overlap_kl = false, men du skal naturligvis sikre dig at du altid kommer videre i dit recordset, så du på et tidspunkt bliver færdig med det.
Hvis du smider en beskrivelse af hvornår du ønsker at flytte videre til næste række, kan jeg nok bedre hjælpe dig.
Jeg har lige kigget koden løst igennem, og jeg vil tro at dette løser dit problem. (Hvis denne kodestump vel at mærke gør det som jeg tror den gør. :-)
...denne kodestump skifter du ud:
If overlap_kl = False Then rs.movenext Else response.write \"Lokalet er optaget i dette tidsrum, prøv noget andet.\" End If End If
...og sætter dette ind istedet:
rs.movenext End If If overlap_dato = False Then response.write \"Der er slet ikke andre der har booket lokalet denne dato.\" Else If overlap_kl = False Then response.write \"Lokalet er ledigt i det angivne tidsrum, men er i brug på andre tidspunkter den samme dag.\" Else response.write \"Lokalet er optaget i dette tidsrum, prøv noget andet.\" End if End if
Nu bevæger du dig videre i dit recordset uanset hvad. Dertil bør du nok tilføje et ekstra klausul på din WHILE sætning, da du vel næppe gider bladre videre, hvis du allerede er klar over at lokalet er optaget...?
Det bliver vist noget i stil med: Do while not (RS.eof or overlap_dato = True or overlap_kl = True)
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.