Håller på att fixa med ett bokningsystem som har en bugg...
Ifall man är inne och bokar en tjänst en dag t.ex från kl9.00 till 12.00 om man nu bokar den så går det inte för någon annan att boka den tiden.
Men ifall man har sidan uppe t.ex om jag öppnar sidan och tar väldigt lång tid på mig och någon annan går in och bokar tiden före mig och att sedan jag bokar tiden så blir det dubbelbokning.
for i = Starttid to Sluttid
rs.AddNew
rs("ObjektID") = ObjektID
rs("ResourceNo") = request.cookies("Anstnr")
rs("Datum") = Datum
rs("Tid") = i
rs.update
next
Nu lägger scriptet in data i databasen 1 timma itaget(om ni fattar) jag skulle vilja skriva något så att den kollar innan den lägger in timman ifall det finns något där. Men det vill sig inte riktigt.
for i = Starttid to Sluttid
If Not Datum = "" And i = "" then
Response.Write Alert("Fel. Dubbelbokning")
Response.Write "<script>history.go(-1);</script>"
End If
next
for i = Starttid to Sluttid
rs.AddNew
rs("ObjektID") = ObjektID
rs("ResourceNo") = request.cookies("Anstnr")
rs("Datum") = Datum
rs("Tid") = i
rs.update
next
Kolla i databasen om datumet du vill spara redan finns där.. ex:
[red]...
Set objRs = objConn.Execute("SELECT Datum FROM tbl WHERE Datum = '"& Datum &"'")
If objRs.EOF Then
'Ok, datumet finns inte så nu kan vi spara.
objConn.Execute("INSERT INTO tbl(ObjektId, ResourceNo, Datum, Tid) VALUES("& ObjektID &", "& request.cookies("Anstnr") &", '"& Datum &"', "& i &")"),,128
Else
'Dubbebokning
End If
objRs.Close
Set objRs = Nothing
...[/red]
Notera att du får ändra lite beroende på Dina datatyper, objekt m.m. :)
Ahh den såg inte fel ut du...
Kan man köra And i WHERE satsen? jag måste juh kolla ifall tiden på det speciella datumet är ledigt..
Annars va denna Nästan bra, Det enda med denna är att den köra alerten hela tiden :/
sql = "SELECT * FROM _Portal_bokning WHERE Datum = '" & Datum &"'"
rs.open sql, con, 1, 2
for i = Starttid to Sluttid
If Datum = Rs("Datum") And i = Rs("Tid") then
Response.Write Alert("Fel! Dubbelbokning")
Response.Write "<script>history.go(-2);</script>"
End If
next
If Not Datum = Rs("Datum") And i = Rs("Tid") then
rs.close
sql = "SELECT * FROM _Portal_bokning WHERE 1 = 2 "
rs.open sql, con, 1, 2
for i = Starttid to Sluttid
rs.AddNew
rs("ObjektID") = ObjektID
rs("ResourceNo") = request.cookies("Anstnr")
rs("Datum") = Datum
rs("Tid") = i
rs.update
next
rs.close
Else
rs.close
End If
Set Rs = Con.Execute("SELECT Datum FROM _Portal_bokning WHERE Datum = '" & Datum & "' AND Tid =" & starttid &" OR Datum = '" & Datum & "' AND Tid = " & Sluttid & "")
If Rs.EOF Then
' **** Addar tiderna till databasen **************************************
Rs.Close
Sql = "SELECT * FROM _Portal_bokning WHERE 1 = 2 "
Rs.open sql, Con, 1, 2
for i = Starttid to Sluttid
' rs.AddNew
' rs("ObjektID") = ObjektID
' rs("ResourceNo") = request.cookies("Anstnr")
' rs("Datum") = Datum
' rs("Tid") = i
' rs.update
Response.Write "Datum " & Datum & " och Starttid " & Starttid & " och Sluttid " & Sluttid & " och Tid " & i & "<br>"
next
Rs.Close
Else
' **** Ger felmedelande om det är dubbelbokning **************************
Response.Write Alert("Fel! Dubbelbokning")
Response.Write "<script>history.go(-2);</script>"
End If
Och Jag vet att starttid och sluttid redan finns där. plus att jag skriver ut denna.. detta är Det som kommer in nu.
Datum 2005-03-31 och Starttid 6 och Sluttid 13 och Tid 6
Datum 2005-03-31 och Starttid 6 och Sluttid 13 och Tid 7
Datum 2005-03-31 och Starttid 6 och Sluttid 13 och Tid 8
Datum 2005-03-31 och Starttid 6 och Sluttid 13 och Tid 9
Datum 2005-03-31 och Starttid 6 och Sluttid 13 och Tid 10
Datum 2005-03-31 och Starttid 6 och Sluttid 13 och Tid 11
Datum 2005-03-31 och Starttid 6 och Sluttid 13 och Tid 12
Datum 2005-03-31 och Starttid 6 och Sluttid 13 och Tid 13