28. november 2000 - 23:47Der er
15 kommentarer og 1 løsning
Tjek på DB input
Jeg har en DB hvor jeg sender en dato og en tid ned. Jeg mangler et script der tjekker i DB\'en om der er en dato, hvor enten Tid1, Tid2 eller Tid3 er reserveret.
AI bliver først for alvor en del af arbejdet, når teknologien integreres i den måde, vi arbejder på. At have adgang til AI betyder ikke nødvendigvis, at medarbejderne er klar til at bruge den.
Do While Not recordset.EOF Select Case recordset(\"tid\") Case Tid1 Reserveret = \"ja\" Case Tid2 Reserveret = \"ja\" Case Tid3 Reserveret = \"ja\" Case Else Reserveret = \"nej\" End Select Loop
Jeg forstår ikke rigtig Case-begrebet, måske du kunne forklarer. Også tror jeg der er et problem med tid. Jeg har tre - Tid1, Tid2, Tid3 i DB\'en, så der er ikke bare en \"Tid\" i min Recordset.
Meningen er ikke at jeg skal vide om der er nogle reserveret, men scriptet skal tjekke hvilke tider der er reserveret. Det skal ikke sende besked tilbage, men stoppe for reserveringen hvis der allerede er reserveret på den tid, som vedkommende forsøger at reserverer, og lade vedkommende gennemfører reservationen, hvis tiden er ledig.
Lad os sige at brugeren indtaster to tidspunkter kaldet StartTime og EndTime (begge af typen datetime) og vi ønsker at tjekke på om det konflikter med en eksisterende reservation.
Prøv med nedenstående. Vær opmærksom på at koden ikke er testet og at den er frit fra leveren ;-)
strSQL = \"SELECT * FROM tblReservations WHERE \" strSQL = strSQL & \"(StartTime>=\" & rqsStartTime & \" AND StartTime<=\" & rqsEndTime & \")\" strSQL = strSQL & \" OR (EndTime>=\" & rqsStartTime & \" AND EndTime<=\" & rqsEndTime & \")\"
Set rsSchedule = cnnDatabase.Execute(strSQL)
If rsSchedule.EOF Then Response.Write \"Inserting reservation....\" \'Indsæt reservation i databasen Else Response.Write \"A conflict has occured, we\'re not going to do anything!\" End If
<%\'----------skal tjekke om dato\'en og tiden er taget------------------
strSQL = \" SELECT * FROM Kalend WHERE Tid1= \" & -5 & \" OR Tid2=\" & -4 & \" OR Tid3=\" & -5 &\" And Dato = #\"&session(\"a\")&\"#\" Set rsSchedule = conn.Execute(strSQL)
If rsSchedule.EOF Then Response.Write \"\" Else \'Response.Write \"Aftale(r) fundet!\" Response.Redirect \"skema.asp?error=3\" End If %>
Men den melder error hver gang. Er der en der kan gennemskue hvorfor?
Det vil altså sige at den går igennem if sætningen og tager det efter else - hvilket i min forståelse vil sige at den har fundet noget også selvom der ikke er reserveret noget i dette felt.
<%\'----------skal tjekke om dato\'en og tiden er taget------------------
strSQL = \" SELECT Tid1, Tid2, Tid3 FROM Kalend WHERE Dato = #\"&session(\"a\")&\"#\" Set rsSchedule = conn.Execute(strSQL)
If rsSchedule(\"Tid1\") = \"-5\" Then Response.Redirect \"skema.asp?error=3\" elseif rsSchedule(\"Tid2\") = \"-4\" Then Response.Redirect \"skema.asp?error=3\" elseif rsSchedule(\"Tid3\") = \"-5\" Then Response.Redirect \"skema.asp?error=3\" Else Response.Write \"\" End If %>
Men problemet er at bare en af tiderne er udfyldt så melder den at tiden er reserveret, men det er jo kun hvis den pågældende tid er reserveret at det er interessant. Hvordan kommer man frem til det?
Synes godt om
Ny brugerNybegynder
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.