Archief - ASP: dubbele boeking

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

DaSpeeD

Legacy Member
ik probeer een reservatie systeem te maken voor een school, waar ze voertuigen en lokalen kunnen reserveren.
alles lukt behalve mijn controle op dubbele boekingen, er moet worden gecontroleerd of het item, dag en uur niet hetzelfde is en dit lukt niet.

Code:
<%
Dim cnDB
Dim strConnstring
Dim rstreservatie
dim blninorde

blninorde = true

strConnstring= "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("gegevens.mdb")
set  cnDB = Server.CreateObject("ADODB.Connection")
cnDB.open strConnstring

set rstreservatie = cnDB.execute("SELECT * from tblreservatie where Datum2 = '" & session("strdatum") & "' and Item = '" & session("stritem") & "' order by Datum DESC")

do while not rstreservatie.EOF
if session("uurvan") >= rstreservatie("Startuur") and session("uurvan") <= rstreservatie("Einduur") or session("uurtot") > rstreservatie("Startuur") and session("uurtot") <= rstreservatie("Einduur") or session("startuur") < rstreservatie("Startuur") and session("uurtot") > rstreservatie("Einduur") then	
			blninorde = false
end if
rstreservatie.MoveNext
loop
cnDB.close
if blninorde = true then
	response.Redirect("verwerkingreservatie.asp")
else
%>
<font size="4" face="arial,helvetica"><strong> Fout in de reservatie! </strong></font>
			<br>
			<br>
			OPGELET!!! De reservatie bestaat al, om te zien wat er reeds is gereserveerd duw op de knop Gereserveerd op de reservatie pagina!
			<br>
			<br>
<a href="reservatie.asp">Probeer opnieuw</a>
<%
end if
%>

killgore

Legacy Member
ik denk dat het licht aan het feit dat je zoveel zaken checkt in 1 if en met verscheidene logische operators (and EN or) werkt. Haakjes gebruiken daar zou goed idee zijn denk ik.

servi

Legacy Member
geen idee waarom je het je eigen zo moeilijk maakt

maar stel even het volgende :

reservatie 14u00 -> 16u00 op 10 juni
nieuwe reservatie 15u00 -> 17u00 op 10 juni

dan is de SQL-code ( alles tussen '' zijn hier variabelen )

SELECT COUNT(*) FROM tblreservatie WHERE datum2='10/06/05' AND Item='7'
AND ( '15u00' BETWEEN startuur AND einduur )
OR ('17u00' BETWEEN startuur AND einduur )

als je dan een resultaat terugkrijgt wil dit zeggen dat in die tijdspanne dat item al gereserveerd is.

de ASPcode is dan zoiets ongeveer ( urtgezonderd syntaxfouten ) :

set rstreservatie = cnDB.execute("SELECT * from tblreservatie where Datum2 = '" & session("strdatum") & "' and Item = '" & session("stritem") & "' AND ( '" & session("uurvan") & "' BETWEEN startuur AND einduur OR '" & session("uurtot") & "' BETWEEN startuur AND einduur ) ")

if not rstreservatie.EOF
' fout : is al gereserveerd

DaSpeeD

Legacy Member
thx voor de code, werkt wel nog niet, maar ik denk dat het probleem ligt aan de wijze hoe de datum wordt gelezen.

Treuer'ken

Legacy Member
ik heb hetzelfde probleem gekend,
in de database staat het veld gemarkeerd als datum/tijd
in de resultset waarmee ik het ophaalde stond het ook als datum tijd gemarkeerd.
dit lukte niet om te vergelijken,

in de database laat je het type van het veld op datum/tijd staan
in uw resultset verander je dat type gewoon naar string
dan kan je prima vergelijken en mag je if structuur zolang zijn als je maar wilt.

Mvg Treuer'ken
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan