20. oktober 2002 - 21:08Der er
30 kommentarer og 2 løsninger
Lidt asp sjov!
Jeg har lidt af en opgave jeg håbede der var en der kunne hjælpe med. Jeg er ved at lave et bookningssystem hvor man vælger en dato og kan så se en tidstavle for dagen og se hvilke bookninger der er lavet. Man vælger så en fri tid og kommer så til den side hvor jeg skal have lidt hjælp til. Jeg vil gerne have lavet en option select der kun viser de slut tider man kan vælge imellem.
Følgende bruges til at hente de tider der er booket fra databasen:
Set Con = Server.CreateObject("ADODB.Connection") DBPath = "DBQ=" & server.mappath("../../db/Booking.mdb") Con.Open "DRIVER={Microsoft Access Driver (*.mdb)};Password=1234 ;" & DBPath 'Find Bookninger for valgte dato dato = sQMdr & "-" & sQDag & "-" & sQAar ' Format til DB MM-DD-YYYY SQL = "SELECT start FROM booking WHERE dato = #" & dato & "#"
set rs = con.execute (SQL)
Start tiden hentes vha følgende:
request.querystring("Tid")
Jeg håber det er til at forstå og at der er en eller anden der gider hjælpe!
De fleste virksomheder har efterhånden bevist, at AI virker.
Pilotprojekter leverer resultater. Medarbejdere bruger generative AI-værktøjer. Nye use cases dukker op på tværs af organisationen.
Det skal være muligt at booke alle tiderne fra 7:3 op til 20:30 med spring af 30 min ... altså kun hvis der ikke er andre bookninger ... er der en bookning imellem skal det jo kun være muligt at lave en bookning op til det tidspunkt der ligger lige før bookningen som jeg prøvet at forklare i eksemplet i start teksten ... hjalp det?
jeg ville lave en tabel, hvor der for hver halve time bliver indsat en post(linie) i tabellen, der bliver bestil fx 07:30-08:30 af bruger 4, og 17-19, af bruger 7:
Sql = "SELECT * from tabel where booked AND dato=#dato#" Set Rs = Conn.Execute(Sql)
Do while NOT Rs.EOF If bookedtider <> "" Then bookedtider = bookedtider & Rs("tid") Else bookedtider = bookedtider & "," & Rs("tid") End If Rs.MoveNext Loop
For EACH tid In Split(tider, ",") If tid = request.querystring("Tid") OR vivisertiderher = 1 Then vivisertiderher = 1 'vi viser tider sålænge værdi=1 End If If InStr(bookedtider, tider)=0 AND vivisertiderher = 1 Then Response.write "<option>" & tid & "</option>" & VBCrLf Else vivisertiderher = 0 End If Next
For EACH tid In Split(tider, ",") ' If tid = "10:00" OR vivisertiderher = 1 Then ' If tid = "14:00" OR vivisertiderher = 1 Then
' If tid = request.querystring("Tid") OR vivisertiderher = 1 Then vivisertiderher = 1 'vi viser tider sålænge værdi=1 End If If InStr(bookedtider, tid)=0 AND vivisertiderher = 1 Then Response.write "<option>" & tid & "</option>" & VBCrLf Else vivisertiderher = 0 End If Next
det er det samme........ jeg gentager min rettelse....
jeg har rettet : "If InStr(bookedtider, tider)" til "If InStr(bookedtider, tid)"
jeg gave dette eksempel der via cut&paste skulle virke fejlfrit.... jeg har ikke acces på den maskine jeg sidder ved... og kan derved ikke selv teste op mod dette, men den fejl du beskrev, kan jeg ikke lige tyde.... jeg har ikke fundet yderligere fejl, hvis du ønsker hjælp til access delen, kan dette også gives, bare ik lige nu, pga. den maskine jeg benytter lige nu :-)
jeg ser om jeg kan komme vidre med det ... hvis du får adgang til en computer med access så vil jeg meget gerne have at du ser om du kan hjælpe vidre ...
Jeg har prøvet at overføre det over i min og rette det til men nu skriver den en option select og derefter alle tiderne og ikke tidene i option selecten ...
Koden ser således ud:
<% DIM bookedtider
requesttid = request.querystring("Tid")
Set Conn = Server.CreateObject("ADODB.Connection") DBPath = "DBQ=" & server.mappath("../../db/Booking.mdb") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};Password=1234 ;" & DBPath 'Find Bookninger for valgte dato dato = sQMdr & "-" & sQDag & "-" & sQAar ' Format til DB MM-DD-YYYY Sql = "SELECT * from booking WHERE dato = #" & dato & "#" set rs = conn.execute (SQL)
Do while NOT Rs.EOF If bookedtider <> "" Then bookedtider = bookedtider & Rs("start") Else bookedtider = bookedtider & "," & Rs("start") End If Rs.MoveNext Loop
For EACH tid In Split(tider, ",") If tid = requesttid OR vivisertiderher = 1 Then vivisertiderher = 1 'vi viser tider sålænge værdi=1 End If If InStr(bookedtider, tid)=0 AND vivisertiderher = 1 Then Response.write "<option>" & tid & "</option>" & VBCrLf Else vivisertiderher = 0 End If Next
If requesttid = "" Then Response.write "<option>" & "Ingen tider ledige, eller ingen starttid angivet..." & "</option>" & VBCrLf
Min fejl ... der var en konflikt i min kode der gjorde fejlen :-D
Nu har jeg en tilfældig dag 2 bookninger en kl 14:00 og en kl 17:30 ... ligemeget hvornår jeg vælger at booke så kan jeg booke til kl 17:00 også selvom at hvis tiden er før 14:00 så skal jeg kun kunne booke til 13:30! Hvad kan dette skyldes?
Jeg har fundet fejlen men ved ikke hvordan det skal fikses ... den lagre kun den sidste booket tid i bookedtider og ikke dem alle ... hvordan fikses det?
For EACH tid In Split(tider, ",") If tid = starttid Then viindsaettertiderher = 1 'vi indsætter tider sålænge værdi=1 End If If tid = sluttid Then viindsaettertiderher = 0 End If
dato = sQMdr & "-" & sQDag & "-" & sQAar ' Format til DB MM-DD-YYYY
If viindsaettertiderher = 1 Then SqlAdd = "INSERT INTO Bookings (BrugerID,Tid,dato) VALUES (" & BrugerID & ", '" & tid & "', #" & dato & "#)" Conn.Execute(SqlAdd) End If Next
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.