WinXP - IIS v5.1 Jag har gjort något liknande någon gång.Får inte en sträng att matcha ObjRs
accessdatabas
Jag håller på att göra ett bokningssystem där man skall kunna boka tider till de olika banor som tennisklubben har. Det jag skall försöka göra är att presentera det som finns i databasen.
Databasen är uppbyggd enligt följande, se bild!
Jag vill att även de tider som inte finns i databasen skall visas som lediga, så därför och jag gjort en "while"-loop som ser ut enligt följande.Dim ObjConn
Dim StrSQL
Dim StrStartTid
Dim StrSlutTid
Dim StrTid
Dim StrBanaTabell
Dim StrVeckoDag
Set ObjConn = Server.CreateObject("ADODB.Connection")
ObjConn.Open application("dbpath")
'StrVeckoDag = weekDayName(weekday(date,monday),false,monday)
StrVeckoDag = "måndag"
Set ObjRs = Server.CreateObject("ADODB.RecordSet")
StrSQL = "SELECT id,dag,tid,bana,spelare,kommentar FROM banaabonnera where dag like '" & StrVeckoDag & "' and bana like 'inne1' order by tid asc;"
ObjRs.Open StrSQL, ObjConn
StrStartTid = CDate("06:30:00")
StrSlutTid = CDate("21:30:00")
while not StrStartTid = "21:30:00"
if not StrStartTid = CDate(ObjRs("tid")) then
StrBanaTabell = StrBanaTabell & "<tr><td><font color=red>" & ObjRs("tid") & "</font color>-<font color=green>" & StrStartTid & "</font color></td><td>Ledig</td></tr>"
else
StrBanaTabell = StrBanaTabell & "<tr><td><font color=red>" & ObjRs("tid") & "</font color>-<font color=green>" & StrStartTid & "</font color></td><td>" & ObjRs("spelare") & "</td></tr>"
ObjRs.MoveNext
end if
StrStartTid = dateadd("h", 01, StrStartTid)
wend
objRs.close
Set ObjRs = nothing
ObjConn.Close
Set ObjConn = nothing
I koden kan vi se att den tid som hämtas i databasen står till vänster, mao ObjRs. Den tid som hela tiden ökar med en timme är den som står till höger, mao StrStartTid</font color>.
Den första speltiden som ni kan se är klockan 10:30, vilket resulterar i att Björn Bohlin skrivs ut, och att ObjRs flyttar ner en rad till nästa speltid kl. 15:30.
Problemet som uppstår är att, om ni kollar resultatet, att när StrStartTid har kommit till 15:30 då ObjRs = StrStartTid, inte fungerar. Den påstår att CDate("15:30:00") != CDate("15:30:00").
Resultat:
Boka speltid
Tid Bana 1
10:30:00-06:30:00 Ledig
10:30:00-07:30:00 Ledig
10:30:00-08:30:00 Ledig
10:30:00-09:30:00 Ledig
10:30:00-10:30:00 Björn Bohlin
15:30:00-11:30:00 Ledig
15:30:00-12:30:00 Ledig
15:30:00-13:30:00 Ledig
15:30:00-14:30:00 Ledig
15:30:00-15:30:00 Ledig
15:30:00-16:30:00 Ledig
15:30:00-17:30:00 Ledig
15:30:00-18:30:00 Ledig
15:30:00-19:30:00 Ledig
15:30:00-20:30:00 Ledig
SELECT id,dag,tid,bana,spelare,kommentar FROM banaabonnera where dag like 'måndag' and bana like 'inne1' order by tid asc;21:30:00
Vad gör jag för fel! Hjälp!
/MVH Carl-Marcus
PS. Hur får jag till bilderna. Vart skall jag tanka upp dem?
Sv: Får inte en sträng att matcha ObjRs
Jag gjorde för en HTML-tabell som visar alla tider som skall kunna bokas.
Nedan följer en beskrivning hur jag skulle gjort det.
Tid i första tabellen, tillgänglighet för bana 1, bana 2 i nästa osv.
Tid Bana 1
10:30:00-06:30:00 Ledig
10:30:00-07:30:00 Ledig
10:30:00-08:30:00 Ledig
10:30:00-09:30:00 Ledig
10:30:00-10:30:00 Ledig
15:30:00-11:30:00 Ledig
15:30:00-12:30:00 Ledig
15:30:00-13:30:00 Ledig
15:30:00-14:30:00 Ledig
15:30:00-15:30:00 Ledig
15:30:00-16:30:00 Ledig
15:30:00-17:30:00 Ledig
15:30:00-18:30:00 Ledig
15:30:00-19:30:00 Ledig
15:30:00-20:30:00 Ledig
I cellerna (där det nu står "Ledig") anropar en funktion som kollar om bana 1 är ledig just den dagen och tiden.
<code>
<%
'högst upp på sidan kollar man vilket datum det är i dag och om annat datum valts.
if request.form("datum")<> "" then
theDate=request.form("datum")
else
theDate=date()
end if
Function CheckAvailibility(whatdate,whattime,whatcourt)
if whatdate = "" OR whattime = "" OR whatcourt = "" Then exit function
SQL="SELECT id, spelare FROM banaabonnera WHERE bana='"&whatcourt&"'" AND tid="&whattime&" AND dag="&whatdate&" "
Set RSboka = Conn.execute(SQL)
If RSboka.EOF then
CheckAvailibility="Ledig"
else
CheckAvailibility=RSboka(1)
End if
RSboka.Close
End function
'Funktionen anropar du genom
Response.write CheckAvailibility(theDate,2,'inne1')
%>
</code>
Att jag angett tiden som 2 är att bestämma att t ex 08:30 - 09:00 skall vara Pass 2 eller motsvarande, om du förstår vad jag är ute efter.
Detta blir en del frågor till databasen, men tror att det kommer fungera rätt så bra i ditt fall.