Avatar billede morton Nybegynder
11. december 2001 - 13:02 Der er 5 kommentarer og
1 løsning

fejl i mødebookingsystem

Hej Eksperter,

Vi har et mødebookningsystem, hvorpå man kan reservere et af vores 4 mødelokaler. Problemet opstår når nogen aflyser et møde i systemet. Vores kantine skal modtage en e-mail som fortæller at mødet er blevet aflyst. Det gør den også men systemet skriver konstant et bestemt mødelokale (gult mødelokale)fremfor det der i realiteten er blevet aflyst. 

Koden er i asp og databasen er access 97. Det virker ikke som om der er nogle forkerte referancer i databasen.

Jeg går udfra at det er i reservationens deletemeeting.asp den er gal med.

Koden i deletemeeting.asp ser således ud:


<% @LANGUAGE = VBScript %>
<%
Option Explicit
Response.Expires = 0

Dim objRS2, objConnection2
Set objConnection2 = Server.CreateObject(\"ADODB.Connection\")
objConnection2.Open \"DSN=reservation;Database=reservation;UID=;PWD=;\"
Set objConnection2 = objConnection2.Execute(\"DELETE FROM Reservation WHERE id=\" & Request.QueryString(\"id\") & \"\")

if Request.QueryString(\"loc\") <> \"\" then

    Dim objMail, aRecipients
    Set objMail = Server.CreateObject(\"CDONTS.NewMail\")

    objMail.From = \"modebooking@hep.dk\"
    objMail.To = \"kantinen@hep.dk\"
objMail.Subject = \"Annullering af bestilling den \" & Request.QueryString(\"Date\") & \" i \" & Request.QueryString(\"loc\")
    objMail.Body = \"Mødet er blevet aflyst. Nedenstående reservation bedes derfor annulleret:\" & chr(13) & chr(13) & replace(Request.QueryString(\"Mail\"),\"||\", chr(13))
    objMail.Send
end if

%>
<html><head><title></title>
<script LANGUAGE=\"JavaScript\">
<!-- //
    parent.opener.reloadBR();
    self.close();
// -->
</script>
</head><body></body></html>


Håber i kan hjælpe - skriv hvis i har brug for mere info
Avatar billede keysersoze Ekspert
11. december 2001 - 13:16 #1
du efterspørger (så vidt jeg kan se) lokalet ud fra adressefeltet - altså querystringen - altså må der føres en forkert lokale-farve med fra den forrige side!
Avatar billede morton Nybegynder
11. december 2001 - 13:52 #2
Hej igen,

Jeg har nu \"vedhæftet\" koden til den fil som foretager reservationen i håb om i kan se fejlen heri!

her er: newres.asp

<% @LANGUAGE = VBScript %>
<%
Option Explicit
Response.Expires = 0
%>
<!--#include file=\"./adovbs.inc\"-->
<%
Dim objConn, objRS

Dim objConnDay, objRSDay
Dim objConnReservation, objRSReservation
Set objConnDay = Server.CreateObject(\"ADODB.Connection\")
objConnDay.Open \"DSN=reservation;Database=reservation;UID=;PWD=;\"
Set objRSDay = objConnDay.Execute(\"SELECT * FROM DaySetup WHERE day=\" & weekday(session(\"selectedDate\"),2) & \";\")

Dim strInit, strMessage, strLocation, strFromDate, strFromTimeH, strFromTimeM, strToTimeH, strToTimeM, item, strMail
Dim boolUpdate, boolLocation

if Request.QueryString(\"mode\") <> \"edit\" then
    strInit = Request.QueryString(\"init\")
    strMessage = Request.QueryString(\"message\")
    strLocation = Request.QueryString(\"location\")
    if strLocation = \"*\" or strLocation = \"\" then
        for each item in Request.QueryString
            if instr(item,\"loc\") then
                strLocation = Request.QueryString(item)
            end if
        next
    end if
    strFromDate = Request.QueryString(\"fromDate\")
    strFromTimeH = Request.QueryString(\"fromTimeH\")
    strFromTimeM = Request.QueryString(\"fromTimeM\")
    strToTimeH = Request.QueryString(\"toTimeH\")
    strToTimeM = Request.QueryString(\"toTimeM\")
    strMail = Request.QueryString(\"mail\")
else
    Set objConnReservation = Server.CreateObject(\"ADODB.Connection\")
    objConnReservation.Open \"DSN=reservation;Database=reservation;UID=sa;PWD=;\"
    Set objRSReservation = objConnReservation.Execute(\"SELECT * FROM Reservation WHERE date = \" & clng(session(\"selectedDate\")) & \" AND id=\" & Request.QueryString(\"id\") & \";\")
   
    strInit = objRSReservation(\"init\")
    strMessage = objRSReservation(\"message\")
    strLocation = cstr(objRSReservation(\"location\"))
    strFromDate = objRSReservation(\"date\")
    strFromTimeH = left(formatdatetime(objRSReservation(\"fromTime\"),4),2)
    strFromTimeM = right(formatdatetime(objRSReservation(\"fromTime\"),4),2)
    strToTimeH = left(formatdatetime(objRSReservation(\"toTime\"),4),2)
    strToTimeM = Right(formatdatetime(objRSReservation(\"toTime\"),4),2)
    strMail = objRSReservation(\"email\")
end if

if Request.QueryString(\"mode\") <> \"edit\" and strLocation <> \"\" and strFromDate <> \"\" and strFromTimeH <> \"\" And strFromTimeM <> \"\" and strToTimeH <> \"\" And strToTimeH <> \"\" then
    Dim objRS2, objConnection2

    if Request.QueryString(\"editdelete\") <> \"\" then
        Set objConnection2 = Server.CreateObject(\"ADODB.Connection\")
        objConnection2.Open \"DSN=reservation;Database=reservation;UID=sa;PWD=;\"
        Set objRS2 = objConnection2.Execute(\"DELETE FROM Reservation WHERE id=\" & Request.QueryString(\"editdelete\") & \"\")
        Set objRS2 = Nothing : Set objConnection2 = Nothing
   
        for i = 0 to 50000
            Response.Write \" \"
        next
       
    end if
    \'Gemmer reservation
    for each item in Request.QueryString
        if instr(item,\"loc\") and Request.QueryString(item) <> \"*\" then
        boolUpdate = true
            Set objConnReservation = Server.CreateObject(\"ADODB.Connection\")
            objConnReservation.Open \"DSN=reservation;Database=reservation;UID=sa;PWD=;\"
            Set objRSReservation = objConnReservation.Execute(\"SELECT * FROM Reservation WHERE date = \" & clng(cdate(formatdatetime(session(\"selectedDate\"),2))) & \" AND location=\" & Request.QueryString(item) & \"\")

            do while not objRSReservation.EOF
                if formatdatetime(cdate(objRSReservation(\"fromTime\")),4) => formatdatetime(strFromTimeH & \":\" & strFromTimeM,4) and formatdatetime(objRSReservation(\"fromTime\"),4) < formatdatetime(strToTimeH & \":\" & strToTimeM,4) then
                    session(\"error\") = \"Du kan ikke lave denne reservation da den overlapper en eksisterende reservation\"
                    boolUpdate = false
                end if
                if formatdatetime(cdate(objRSReservation(\"toTime\")),4) > formatdatetime(strFromTimeH & \":\" & strFromTimeM,4) and formatdatetime(objRSReservation(\"toTime\"),4) <= formatdatetime(strToTimeH & \":\" & strToTimeM,4) then
                    session(\"error\") = \"Du kan ikke lave denne reservation da den overlapper en eksisterende reservation\"
                    boolUpdate = false
                end if
                if formatdatetime(cdate(objRSReservation(\"fromTime\")),4) <= formatdatetime(strFromTimeH & \":\" & strFromTimeM,4) and formatdatetime(cdate(objRSReservation(\"toTime\")),4) > formatdatetime(strFromTimeH & \":\" & strFromTimeM,4) then
                    session(\"error\") = \"Du kan ikke lave denne reservation da den overlapper en eksisterende reservation\"
                    boolUpdate = false
                end if
                objRSReservation.MoveNext
            loop
            if boolUpdate = true then
                Set objConnection2 = Server.CreateObject(\"ADODB.Connection\")
                objConnection2.Open \"DSN=reservation;Database=reservation;UID=sa;PWD=;\"
                set objRS2 = Server.CreateObject(\"ADODB.Recordset\")
               
                if cint(strToTimeH) = cint(left(formatdatetime(objRSDay(\"showToTime\"),4),2)) + 1 then
                    strToTimeM=\"00\"   
                end if
               
                objRS2.CursorLocation = adUseServer
                objRS2.CursorType = adOpenKeyset
                objRS2.LockType = adLockOptimistic
                objRS2.Open \"Reservation\", objConnection2, , , adCmdTable

                objRS2.AddNew
                objRS2(\"init\") = strInit
                objRS2(\"message\") = strMessage
                objRS2(\"location\") = cint(Request.QueryString(item))
                objRS2(\"Date\") = strFromDate
                objRS2(\"fromTime\") = strFromTimeH & \":\" & strFromTimeM
                objRS2(\"toTime\") = strToTimeH & \":\" & strToTimeM
                if cint(Request.QueryString(item)) >= 2 and cint(Request.QueryString(item)) <= 5 then
                    objRS2(\"email\") = strMail
                end if
                objRS2.Update
               
                session(\"selectedDate\") = strFromDate
               
                objRS2.close : objConnection2.close
                Set objRS2 = Nothing : Set objConnection2 = Nothing
            end if

        end if
    next
   
   
   
    if strMail <> \"\" then

   
        Set objConn = Server.CreateObject(\"ADODB.Connection\")
        objConn.Open \"DSN=reservation;Database=reservation;UID=sa;PWD=;\"
        Set objRS = objConn.Execute(\"SELECT * FROM Locations WHERE id = \" & strLocation & \" ORDER BY id\")
   
        Dim objMail, aRecipients
        Set objMail = Server.CreateObject(\"CDONTS.NewMail\")

        objMail.From = \"modebooking@hep.dk\"
        \'objMail.To = \"martin.boston@hep.dk\"
        objMail.To = \"kantinen@hep.dk\"
        objMail.Subject = objRS(\"locName\") & \" den \" & strFromDate & \" kl. \" & strFromTimeH & \":\" & strFromTimeM
        objMail.Body = Request.QueryString(\"init\") & \" Ønsker følgende til ovenstående møde:\"& chr(13) & chr(13) & strMail
       
        if Request.QueryString(\"oldMail\") <> strMail then
        objMail.Send
        end if
    end if
   
    %><html><head><title></title>
    <script LANGUAGE=\"JavaScript\">
    <!-- //
        parent.opener.reloadBR();
        self.close();
    // -->
    </script>
    </head><%
else

    Dim i
    Set objConn = Server.CreateObject(\"ADODB.Connection\")
    objConn.Open \"DSN=reservation;Database=reservation;UID=sa;PWD=;\"
    Set objRS = objConn.Execute(\"SELECT * FROM Locations WHERE locName <> \'Tid\' ORDER BY id\")
    %>
    <html><head><title>Ny reservation</title><LINK rel=\"stylesheet\" type=\"text/css\" href=\"style.css\">
    <script LANGUAGE=\"JavaScript\">
    <!-- //
    function deleteThis(id){
    if (newRes.oldmail.value != \"\"){
        alert(\"Kantinebestillingen er blevet afmeldt!\")
        document.location = (\"delete.asp?id=\" + id + \"&loc=<%=objRS(\"locName\")%>&Date=<%=strFromDate%>&mail=<%=replace(replace(replace(replace(strMail & \" \", chr(13), \"||\"), chr(10), \"||\"), \"\'\", \"\"), chr(34), \"\")%>\");
    }
    else{
        document.location = (\"delete.asp?id=\" + id);
    }
    return true;
    }
   
    function Validate(){
    if (newRes.init.value == \"\"){
        alert(\"Du skal angive dine initialer\")
        newRes.init.focus(this);
        return true;
    }
    if (newRes.oldmail.value != \"\" && newRes.mail.value != \"\"){
        if (newRes.oldmail.value != newRes.mail.value){
            if (confirm(\"Ønsker du at sende en ny mail til kantinen?\")){
               
            }
            else {
                newRes.mail.value = newRes.oldmail.value
            }
        }
    }
    newRes.submit();
    }
    // -->
    </script>
    </head><body onload=\"java script:document.newRes.init.focus();\"><h1><img src=\"images/newres.gif\" vspace=2 align=absbottom hspace=2>&nbsp;&nbsp;Ny reservation</h1>
    <table width=380 border=0><tr><td width=180 bgcolor=CCCCCC style=\"padding: 5;\">
    <form name=newRes action=./newRes.asp method=get>
    <%if Request.QueryString(\"mode\") = \"edit\" then%>
        <Input type=\"hidden\" name=editdelete value=<%=Request.QueryString(\"id\")%>>
    <%end if%>
    Initialer:<br>
    <INPUT type=\"text\" name=init size=3 value=\"<%=strInit%>\"><br><br>
    Reservationsbeskrivelse:<br>
    <INPUT type=\"text\" name=message size=25 value=\"<%=strMessage%>\"><br><br>
    Reservér:<br>
    <SELECT name=location><option value=\"*\"></option><%
    do while not objRS.EOF
        if cint(objRS(\"accessories\")) = 0 then
            Response.Write \"<option value=\" & objRS(\"id\")
            if strLocation = CStr(objRS(\"id\")) then Response.Write \" selected\"
            Response.Write \">\" & objRS(\"locName\") & \"</option>\"
        end if
        objRS.MoveNext
    Loop
    objRS.MoveFirst
    %></SELECT><br><br>
    Dato:<br>
    <INPUT type=\"text\" size=10 name=fromDate value=<%=session(\"selectedDate\")%>><br><br>
    Starttidspunkt:<br>
    <SELECT name=fromTimeH><%
    for i = cint(left(formatdatetime(objRSDay(\"showFromTime\"),4),2)) to cint(left(formatdatetime(objRSDay(\"showToTime\"),4),2))
        Response.Write \"<OPTION value=\" & i
        if strFromTimeH <> \"\" then
            if i = cint(strFromTimeH) then
                Response.Write \" selected\"
            end if
        elseif i = 8 then
            Response.Write \" selected\"
        end if
        if i < 10 then
            Response.Write \">0\" & i
        else
            Response.Write \">\" & i
        end if
        Response.Write \"</OPTION>\"
    next
    %></SELECT><SELECT name=fromTimeM><%
    for i = 0 to 1
        Response.Write \"<OPTION value=\" & i * 30
        if strFromTimeM <> \"\" then
            if cint(strFromTimeM) = i * 30 then
                Response.Write \" selected\"
            end if
        end if
        if i = 0 then
            Response.Write \">00\"
        else
            Response.Write \">\" & i * 30
        end if
        Response.Write \"</OPTION>\"
    next
       
    %></SELECT>
    <br><br>
    Sluttidspunkt:<br>
    <SELECT name=toTimeH><%
    for i = cint(left(formatdatetime(objRSDay(\"showFromTime\"),4),2)) to cint(left(formatdatetime(objRSDay(\"showToTime\"),4),2)) + 1
        Response.Write \"<OPTION value=\" & i
        if strFromTimeH <> \"\" then
            if strToTimeH <> \"\" then
                if i = cint(strToTimeH) then
                    Response.Write \" selected\"
                end if
            else
                if i = cint(strFromTimeH) + 1 then
                    Response.Write \" selected\"
                end if
            end if
        elseif i = 9 then
            Response.Write \" selected\"
        end if
        if i < 10 then
            Response.Write \">0\" & i
        else
            Response.Write \">\" & i
        end if
        Response.Write \"</OPTION>\"
    next
    %></SELECT><SELECT name=toTimeM><%
    for i = 0 to 1
        Response.Write \"<OPTION value=\" & i * 30
        if strFromTimeM <> \"\" then
            if strToTimeM = \"\" then
                if cint(strFromTimeM) = i * 30 then
                    Response.Write \"  selected\"
                end if           
            else
                if i * 30 = cint(strToTimeM) then
                    Response.Write \" selected\"
                end if
            end if
        end if
        if i = 0 then
            Response.Write \">00\"
        else
            Response.Write \">\" & i * 30
        end if
        Response.Write \"</OPTION>\"
    next
       
    %></SELECT>   
    </td><td width=2></td><td valign=top bgcolor=#CCCCCC style=\"padding: 5;\">Reservér udstyr:<br><%
    do while not objRS.EOF
        if cint(objRS(\"accessories\")) = 99 then
            %>
            <INPUT type=\"checkbox\" name=\"loc<%=objRS(\"id\")%>\" value=<%=objRS(\"id\")%><%
            if strLocation = cstr(objRS(\"id\")) then Response.Write \" Checked\"
            %>><%=objRS(\"locName\")%><br><%
        end if
    objRS.MoveNext
    loop
    %>
    <br><br>
    Besked til kantinen:&nbsp;&nbsp;&nbsp;<img src=images/plate.gif><br>
    <input type=hidden name=oldmail value=\"<%=strMail%>\">
    <TEXTAREA rows=9 cols=30 name=mail><%=strMail%></TEXTAREA>
    </td></tr></table>
    <p align=right>
    <INPUT type=\"button\" value=\"Gem\" onClick=\"Validate();\" style=\"width=60\" name=submitNewRes>
    <%if Request.QueryString(\"mode\") = \"edit\" then%>
        &nbsp;&nbsp;&nbsp;<INPUT type=\"button\" onClick=\"deleteThis(<%=Request.QueryString(\"id\")%>);\" value=\"Slet\" style=\"width=60\" name=btnDelete>
    <%end if%></p></form><%
    objRS.close : objConn.close
    Set objRS = Nothing : Set objConn = Nothing
end if%>
Avatar billede keysersoze Ekspert
11. december 2001 - 16:38 #3
ARGH!! det er jo umuligt at se noget ud fra så lang en kode... det skal jo kunne ses og testes - og der er grænser for hvor meget tid jeg vil bruge

er det rigtigt, at der føres lokalefarven med i querystringen? - hvis ja, så skal du ind og kigge på hvorfor farven der bliver ført med er forkert... om det er et udtræk fra databasen, om den kommer fra en anden side eller et helt andet sted.

jeg ved ikke om det er dig der har lavet det eller en anden - dette ville måske også være nyttig info for mig
Avatar billede morton Nybegynder
12. december 2001 - 10:16 #4
Hej Keysersoze,

Farven bliver udtrukket fra databasen. Jeg kan desværre ikke komme med så meget hjælp, da det ikke er mig som har lavet systemet. Hver farve har hvert deres id i databasen, så jeg går udfra at det er et kald som er forkert.

Hilsen
Morton
Avatar billede keysersoze Ekspert
12. december 2001 - 10:47 #5
lige umiddelbart kan jeg ikke hjælpe ud fra disse kode-stumper... men fejlen ligger nok enten i databasen eller database udtrækket :o/
Avatar billede morton Nybegynder
11. januar 2002 - 15:37 #6
Jeg har stadig ikke kunnet finde en løsning på problemet, men du skal have en stor tak for dit input keysersoze!

Takker og god weekend

Hilsen
Morton
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester