Sätta en flagga el. likn.

ASP

12 svar · 476 visningar · startad av Rossifumi

Medlem sedan okt. 20001 558 inlägg
Trådstart#1

Jag har fått lite hjälp med en kod här av LarsG, men behöver lite hjälp till ;)

mySQL = "SELECT * FROM maskinHyrTable WHERE hyrMaskinID = " & sMaskin & " ORDER BY hyrUtDatum ASC"
	Set objRS = objConn.Execute(mySQL)

		Do While Not objRS.EOF
			if not (datediff("d",sStartDatum,cdate(objRs("hyrInDatum"))) < 0 or datediff("d",sSlutDatum,cdate(objRs("hyrUtDatum"))) > 0) then
				'sätt OK
else
'sätt NOT			End If
		objRS.MoveNext
		Loop

Och sedan ifall det är typ 10 poster så skall jag kunna kolla ifall ingen blev NOT

If ingen är NOT Then
'lägg till i DB
else
'skriv ut det funkar ej
end if

Fattar någon vad jag är ute efter :q

Medlem sedan juni 200032 967 inlägg
#2
bolIsOk = true
mySQL = "SELECT * FROM maskinHyrTable WHERE hyrMaskinID = " & sMaskin & " ORDER BY hyrUtDatum ASC"
Set objRS = objConn.Execute(mySQL)
Do While Not objRS.EOF
if (datediff("d",sStartDatum,cdate(objRs("hyrInDatum"))) < 0 or datediff("d",sSlutDatum,cdate(objRs("hyrUtDatum"))) > 0) then bolIsOk = false
objRS.MoveNext
Loop
if bolIsOk then
'helt funkis!
else
'trasigt!!!
end if
Medlem sedan okt. 20001 558 inlägg
#3

OK, den funkar delvis...

Men ifall jag har 10 st bokningar på en speciell maskin och de 9 första krockar med den "nya" men den sista "går igenom" så får jag fortfarande att det är OK att boka maskinen :(

Jag måste alltså kolla så att den inte krockar med flera bokningar.

Medlem sedan juni 200032 967 inlägg
#4

du ska aldrig sätta bolIsOk till true, förutom som initialvärde.

fungerar inte min kod?
kan inte se hur bolIsOk kan vara true om den någon gång är satt till false...

Medlem sedan okt. 20001 558 inlägg
#5

OK, så här är koden nu:

Dim sMaskin, sPerson, sForetag, sStartDatum, sSlutDatum, sCheck, bolIsOk

	bolIsOk = true

	sMaskin = Request.Form("maskinID")

	sStartDatum = Request.Form("hyrUtDatum1") & "-" & Request.Form("hyrUtDatum2") & "-" & Request.Form("hyrUtDatum3")
		sStartDatum = CDate(sStartDatum)

	sSlutDatum = Request.Form("hyrInDatum1") & "-" & Request.Form("hyrInDatum2") & "-" & Request.Form("hyrInDatum3")
		sSlutDatum = CDate(sSlutDatum)

	sPerson = Request.Form("hyrPerson")

	sForetag = Request.Form("hyrForetag")

		mySQL = "SELECT * FROM maskinHyrTable WHERE hyrMaskinID = " & sMaskin & " ORDER BY hyrUtDatum ASC"
		Set objRS = objConn.Execute(mySQL)

		Do While Not objRS.EOF
		if (datediff("d",sStartDatum,cdate(objRs("hyrInDatum"))) < 0 or datediff("d",sSlutDatum,cdate(objRs("hyrUtDatum"))) > 0) then bolIsOk = false
		objRS.MoveNext
		Loop

	if bolIsOk = true then
	Response.Write "OK"
	else
	Response.Write "Dubbelbokning"
	end if

end if

Det måste isåfall vara något fel på IF-satsen :q

r: Fel kopierat :(

Medlem sedan okt. 20001 558 inlägg
#6

Vad jag än för så blir det "Dubbelbokning" :(

Medlem sedan okt. 20001 558 inlägg
#7

OK, här är hela koden för sidan:

<% Option Explicit %>
<!-- #include virtual = "/includes/db_open.asp" -->

<html>
<head>
	<title>TVÅ GRÄVARE AB &#0124; Managementsystem</title>
	
	<style>
	<!--

	.datum {font-family: arial, verdana; font-size: 9px; color: #cf2428;}
	.text {font-family: verdana; font-size: 9px; color: #000000;}
	.textTime {font-family: verdana; font-size: 9px; color: #000000; font-style: italic;}
	.red {font-family: verdana; font-size: 9px; color: #cf2428; font-weight: bold;}
	.gray {font-family: verdana; font-size: 9px; color: #666666; font-weight : bold;}
	.black {font-family: verdana; font-size: 9px; color: #000000; font-weight : bold;}
	.white {font-family: verdana; font-size: 9px; color: #ffffff; font-weight : bold;}
	a.blue {font-family: verdana; font-size: 9px; color: #183873; font-weight : bold;}

	-->
	</style>

</head>

<body background="../images/bg_pop.gif" bgcolor="#efefef" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0">
<%

If Request.QueryString("addBook") = "" Then

Dim sMaskinerUrDb

sMaskinerUrDb = "<select name=""maskinID"" style=""width: 150px"" class=""text""><option selected>- Välj en maskin-"

mySQL = "SELECT * FROM maskinTable ORDER by maskinModell ASC"
Set objRS = objConn.Execute(mySQL)

Do While Not objRS.EOF

	sMaskinerUrDb = sMaskinerUrDb & "<option value=""" & objRS("maskinID") & """>" & objRS("maskinModell") & " (" & objRS("maskinNummer") & ")"

objRS.MoveNext
Loop

objRS.Close
Set objRS = Nothing
Set mySQL = Nothing
%>
	<table width="280" border="0" cellspacing="0" cellpadding="0" align="center">
	<tr>
		<td height="45" colspan="2"><img src="../images/1px.gif" width="1" height="45"></td>
	</tr>
	<tr>
		<td class="black" colspan="2">Boka en maskin</td>
	</tr>
	<tr>
		<td height="10" colspan="2"><img src="../images/1px.gif" width="1" height="10"></td>
	</tr>
	<form method="post" action="bookMachine.asp?addBook=yes">
	<tr>
		<td class="black" width="100">Vilken maskin:</td><td class="text" align="left" width="220"><% = sMaskinerUrDb %></td>
	</tr>
	<tr>
		<td height="10" colspan="2"><img src="../images/1px.gif" width="1" height="10"></td>
	</tr>
	<tr>
		<td class="black" width="100">Till vem:</td><td class="text" align="left" width="220"><input type="text" name="hyrPerson" style="width: 150px" class="text"></td>
	</tr>
	<tr>
		<td height="10" colspan="2"><img src="../images/1px.gif" width="1" height="10"></td>
	</tr>
	<tr>
		<td class="black" width="100">På företaget:</td><td class="text" align="left" width="220"><input type="text" name="hyrForetag" style="width: 150px" class="text"></td>
	</tr>
	<tr>
		<td height="10" colspan="2"><img src="../images/1px.gif" width="1" height="10"></td>
	</tr>
	<tr>
		<td class="black" width="100">Från vilket datum:</td><td class="text" align="left" width="220"><input type="text" class="text" style="width: 40px;" maxlength="4" name="hyrUtDatum1"> - <input type="text" class="text" style="width: 25px;" maxlength="2" name="hyrUtDatum2"> - <input type="text" class="text" style="width: 25px;" maxlength="2" name="hyrUtDatum3"> (xxxx-xx-xx)</td>
	</tr>
	<tr>
		<td height="10" colspan="2"><img src="../images/1px.gif" width="1" height="10"></td>
	</tr>
	<tr>
		<td class="black" width="100">Prel. slutdatum</td><td class="text" align="left" width="220"><input type="text" class="text" style="width: 40px;" maxlength="4" name="hyrInDatum1"> - <input type="text" class="text" style="width: 25px;" maxlength="2" name="hyrInDatum2"> - <input type="text" class="text" style="width: 25px;" maxlength="2" name="hyrInDatum3"> (xxxx-xx-xx)</td>
	</tr>
	<tr>
		<td height="10" colspan="2"><img src="../images/1px.gif" width="1" height="10"></td>
	</tr>
	<tr>
		<td width="100"></td><td class="text" align="left" width="220">Glöm ej slutdatumet!</td>
	</tr>
	<tr>
		<td height="10" colspan="2"><img src="../images/1px.gif" width="1" height="10"></td>
	</tr>
	<tr>
		<td width="100" class="black">Läs igenom innan!</td><td><input type="submit" value="Boka" class="text"> <input type="reset" value="Rensa" class="text"></td>
	</tr>
	</form>
	</table>
<%
ElseIf Request.QueryString("addBook") = "yes" Then

Dim sMaskin, sPerson, sForetag, sStartDatum, sSlutDatum, sCheck, bolIsOk

	bolIsOk = true

	sMaskin = Request.Form("maskinID")

	sStartDatum = Request.Form("hyrUtDatum1") & "-" & Request.Form("hyrUtDatum2") & "-" & Request.Form("hyrUtDatum3")
		sStartDatum = CDate(sStartDatum)

	sSlutDatum = Request.Form("hyrInDatum1") & "-" & Request.Form("hyrInDatum2") & "-" & Request.Form("hyrInDatum3")
		sSlutDatum = CDate(sSlutDatum)

	sPerson = Request.Form("hyrPerson")

	sForetag = Request.Form("hyrForetag")

		mySQL = "SELECT * FROM maskinHyrTable WHERE hyrMaskinID = " & sMaskin & " ORDER BY hyrUtDatum ASC"
		Set objRS = objConn.Execute(mySQL)
		Do While Not objRS.EOF
		if (datediff("d",sStartDatum,cdate(objRs("hyrInDatum"))) < 0 or datediff("d",sSlutDatum,cdate(objRs("hyrUtDatum"))) > 0) then bolIsOk = false
		objRS.MoveNext
		Loop

	if bolIsOk = true then
	Response.Write "<br><br><br><br><br>OK"
	else
	Response.Write "<br><br><br><br><br>Dubbelbokning"
	end if

end if

%>
</body>
</html>

Kolla in den på live här, klicka på boka maskin till vänster.

Medlem sedan juni 200032 967 inlägg
#8

if (datediff("d",sStartDatum,cdate(objRs("hyrInDatum"))) < 0 or datediff("d",sSlutDatum,cdate(objRs("hyrUtDatum"))) > 0) then bolIsOk = false

stämmer den if-satsen?

borde inte kontrollen vara beroende på både hyrindatum och hyrutdatum?

kontrollera den if-satsen...

Medlem sedan okt. 20001 558 inlägg
#9

Ligger något i det du säger @nders ;)
Skall fixa det, återkommer ifall det krånglar mer :)

Medlem sedan okt. 20001 558 inlägg
#10

Jag får det bara inte att funka x(

Nu har jag:

If (sStartDatum => objRS("hyrUtDatum") AND sStartDatum <= objRS("hyrInDatum")) AND (sSlutDatum <= objRS("hyrUtDatum") AND sSlutDatum => objRS("hyrInDatum")) Then bolIsOk = false

Men det är fel, men jag fattar inte hur jag skall skriva för att få det riktigt :q

Någon, snälla ;)

Medlem sedan juni 200032 967 inlägg
#11

skriv if-satsen med rena ord först, så blir det lättare att fixa en fungerande if-sats.

nu är jag för trött för att orka tänka hur du vill att den ska fungera, men jag tycker att if-satsen ser konstig ut! :)

Medlem sedan okt. 20001 558 inlägg
#12

Det ser jättekonstig ut, det är typ revision 234 :e
Jag har också snart slut på papper ;)

Jag testar vidare, men ifall någon vet så tveka inte :)

Medlem sedan okt. 20001 558 inlägg
#13

OK, den första satsen (som kolla startdatumet) skall nog vara så här iallafall:

If (sStartDatum => objRS("hyrUtDatum") AND sStartDatum =< objRS("hyrInDatum")) Then bolIsOk = false

Men den andra klarar jag inte riktigt av :(

Finns det ingen annan än @nders som är lite mer logisk än mig ;) :e :q

263 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)