Avatar billede mrs Nybegynder
04. november 2002 - 10:26 Der er 19 kommentarer og
1 løsning

Opdatere database record - Hvad er der galt i koden?

Nu har kigget umådelig mange steder.
Hvad er der galt i denne kode?

Den skal opdatere et record samt poste det før, så man kan rette i den tekst der er i feltet i forevejen.
Filen hedder elevupdate.asp

Linket til siden er eleupdate.asp?ID=[ID]

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("../database/Database.mdb")
Conn.Open DSN

strSQL="update elevnyhed set "
strSQL=strSQL & "Overskrift='" & Request.Form("Overskrift") & "', "
strSQL=strSQL & "Nyhed='" & Request.Form("Nyhed") & "', "
strSQL=strSQL & "SkrevetAf='" & Request.Form("SkrevetAf") & "'"
strSQL=strSQL & "Where ID=" & Cstr(Session("ID"))

Set rs = Conn.Execute(strSQL)

%>

<form method="POST" action="elevupdate.asp?ID=<%Request.Querystring("ID")%>">
<table border="0" width="100%" cellspacing="0" cellpadding="2">
        <tr valign="top">
          <td valign="middle" align="left" colspan="2"><br>Opdater venligst oplysningerne i følgende felter:<strong>
      <%=strError%></td>
        </tr>
        <tr valign="top">
          <td align="right"><p><b>Overskrift: </b></td>
          <td valign="middle" align="left">
<input type="text" name="Overskrift" size="40" value="<%Response.Write("Overskrift")%>"></td>
        </tr>
        <tr valign="top">
          <td align="right"><p><b>Nyhed: </b></td>
          <td valign="middle" align="left">
<textarea rows="10" name="Nyhed" cols="40"><%Response.Write("Nyhed")%></textarea>
</td>
        </tr>
        <tr valign="top">
          <td align="right"><p><b>Skrevet af:</b></td>
          <td valign="middle" align="left">
<input type="text" name="SkrevetAf" size="40"value="<%Response.Write("SkrevetAf")%>">
</td>
        </tr>
        <tr>
          <td><p align="center"><br>
          <input type="submit" value="Gem" name="Opdater"> <input type="button" value="Annuller" name="Annuller" onClick="java script:location.href='elevpost.asp'"></p></td>
        </tr>
      </table>
</form>
Avatar billede Slettet bruger
04. november 2002 - 10:29 #1
hvad får du af fejlæ ?
Avatar billede eagleeye Praktikant
04. november 2002 - 10:31 #2
hvis du ikke tjekker på som form er postet til siden vil du første at opdater databasen når siden loades og du vil få en fejl detfor sæt en f sætning omkring opdatringen som tjkker på en form er send til side:



<%
if request.servervariables("REQUEST_METHOD") = "POST" then
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("../database/Database.mdb")
Conn.Open DSN

strSQL="update elevnyhed set "
strSQL=strSQL & "Overskrift='" & Request.Form("Overskrift") & "', "
strSQL=strSQL & "Nyhed='" & Request.Form("Nyhed") & "', "
strSQL=strSQL & "SkrevetAf='" & Request.Form("SkrevetAf") & "'"
strSQL=strSQL & "Where ID=" & Cstr(Session("ID"))

Set rs = Conn.Execute(strSQL)
end fi
%>
Avatar billede mrs Nybegynder
04. november 2002 - 10:41 #3
Yes det var fejlen i den sætning, nu mangler den bare at skrive værdierne i formen, altså de værdier, der står i feltet i forevejen, så man kan ændre i det og gemme det på samme id
Avatar billede eagleeye Praktikant
04. november 2002 - 10:51 #4
Ok så skal du lave en SELECT og hendte data:
<%
SQL = "SELECT * FROM elevnyhed WHERE ID = " & Request.Querystring("ID")
Set rs = Conn.Execute(SQL)
%>
<form method="POST" action="elevupdate.asp?ID=<%Request.Querystring("ID")%>">


Så kan du rette input felterne til noget dette:

<input type="text" name="Overskrift" size="40" value="<%=rs("Overskrift")%>">

osv.
Avatar billede mrs Nybegynder
04. november 2002 - 11:00 #5
Ja så skriver den dataerne i felterne, men når jeg så har skrevet noget andet og trykker submit, så giver den nedenstående fejl.
Det er linien Set rs = Conn.Execute(SQL)

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "ID =".
/ramsoe/safileup/elevupdate.asp, line 24

Måske jeg mangler noget med siden den skal gå til??
Avatar billede eagleeye Praktikant
04. november 2002 - 11:08 #6
Ja ok det så fordi den forsøger at vise siden igen og querystringen med ID ikke længere findes.

Efter opdatering skal den så vises siden igen eller skal den redirecte et anden sted hen?
Avatar billede eagleeye Praktikant
04. november 2002 - 11:09 #7
efter du har opdateret kan du lave en redirect:

Set rs = Conn.Execute(strSQL)
Conn.Close
response.redirect("side.asp")
end fi
%>
Avatar billede mrs Nybegynder
04. november 2002 - 11:09 #8
Lad den vise siden igen. Har prøvet at skrive lidt til det selv.

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("../database/Database.mdb")
Conn.Open DSN

SQL = "SELECT * FROM elevnyhed WHERE ID = " & Request.Querystring("ID")
Set rs = Conn.Execute(SQL)

'Hvis brugeren har submittet formularen
    if Request.ServerVariables("REQUEST_METHOD") = "POST" then

'Tjecker om felterne er udfyldt
  if (Request.Form("Overskrift") <> "" AND Request.Form("Nyhed") <> "" AND Request.Form("SkrevetAf") <> "") then
    Response.Write("<strong><font color='red'>Du har sendt nyheden!</font></strong>")

    else
    Response.Write("<strong><font color='red'>Du mangler at udfylde felter!</font></strong>")
   
    end if
    end if
%>
Avatar billede eagleeye Praktikant
04. november 2002 - 11:17 #9
Ok du over næsten ID prøv at rette:

<form method="POST" action="elevupdate.asp?ID=<%Request.Querystring("ID")%>">

Til:

<form method="POST" action="elevupdate.asp?ID=<%=Request.Querystring("ID")%>">
Avatar billede eagleeye Praktikant
04. november 2002 - 11:18 #10
og du skal havde disse to linier efter opdater delen

SQL = "SELECT * FROM elevnyhed WHERE ID = " & Request.Querystring("ID")
Set rs = Conn.Execute(SQL)

For den hendter de rigtige nye data ud fra databasen.
Avatar billede mrs Nybegynder
04. november 2002 - 11:25 #11
Efter opdaterdelen?
Hvor er lige det, opdatere den ikke lige præcis med de to sætninger.
Avatar billede eagleeye Praktikant
04. november 2002 - 11:48 #12
Dette styk kode opdater recorden:

<%
if request.servervariables("REQUEST_METHOD") = "POST" then
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("../database/Database.mdb")
Conn.Open DSN

strSQL="update elevnyhed set "
strSQL=strSQL & "Overskrift='" & Request.Form("Overskrift") & "', "
strSQL=strSQL & "Nyhed='" & Request.Form("Nyhed") & "', "
strSQL=strSQL & "SkrevetAf='" & Request.Form("SkrevetAf") & "'"
strSQL=strSQL & "Where ID=" & Cstr(Session("ID"))

Set rs = Conn.Execute(strSQL)
end fi
%>



Dette styke kode hendter data som skal vises i form'en:
SQL = "SELECT * FROM elevnyhed WHERE ID = " & Request.Querystring("ID")
Set rs = Conn.Execute(SQL)


Og hvis du vil vises siden igen med de nye rettelser så skal det som hendter data fra databasen ligge efter det koden som opdater databasen.
Avatar billede mrs Nybegynder
04. november 2002 - 12:59 #13
Det her kører slet ikke så godt for mig, den bliver ved med at melde fejl:

Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "ID=".

Det er denne linie: set rs = Conn.Execute(strSQL)


<%
'Hvis brugeren har submittet formularen
    if Request.ServerVariables("REQUEST_METHOD") = "POST" then

strSQL="update elevnyhed set "
strSQL=strSQL & "Overskrift='" & Request.Form("Overskrift") & "', "
strSQL=strSQL & "Nyhed='" & Request.Form("Nyhed") & "', "
strSQL=strSQL & "SkrevetAf='" & Request.Form("SkrevetAf") & "'"
strSQL=strSQL & "Where ID=" & Cstr(Session("ID"))

set strSQL = Conn.Execute(strSQL)
Conn.Close
response.redirect("elevoversigt.asp")

end if
%>


<%
SQL = "SELECT * FROM elevnyhed WHERE ID = " & Request.Querystring("ID")
Set rs = Conn.Execute(SQL)
%>


<form method="POST" action="elevupdate.asp?ID=<%=Request.Querystring("ID")%>">
<table border="0" width="100%" cellspacing="0" cellpadding="2">
        <tr valign="top">
          <td valign="middle" align="left" colspan="2"><br>Opdater venligst oplysningerne i følgende felter:<strong>
</td>
        </tr>
        <tr valign="top">
          <td align="right"><p><b>Overskrift: </b></td>
          <td valign="middle" align="left">
<input type="text" name="Overskrift" size="40" value="<%=rs("Overskrift")%>"></td>
        </tr>
        <tr valign="top">
          <td align="right"><p><b>Nyhed: </b></td>
          <td valign="middle" align="left">
<textarea rows="10" name="Nyhed" cols="40"><%=rs("Nyhed")%></textarea>
</td>
        </tr>
        <tr valign="top">
          <td align="right"><p><b>Skrevet af:</b></td>
          <td valign="middle" align="left">
<input type="text" name="SkrevetAf" size="40"value="<%=rs("SkrevetAf")%>">
</td>
        </tr>
        <tr>
          <td><p align="center"><br>
          <input type="submit" value="Opdater" name="Opdater"> <input type="button" value="Annuller" name="Annuller" onClick="java script:location.href='elevoversigt.asp'"></p></td>
        </tr>
      </table>
</form>
Avatar billede eagleeye Praktikant
04. november 2002 - 13:03 #14
Hvornår kommer fejlen?
Første gang siden loades ??
Avatar billede eagleeye Praktikant
04. november 2002 - 13:05 #15
arh bare slet denne linie

response.redirect("elevoversigt.asp")

Da siden automatisk vil blive vist...Eller skal du også overføre ID igen såan her:

response.redirect("elevoversigt.asp?id=" & Request.Querystring("ID"))
Avatar billede mrs Nybegynder
04. november 2002 - 13:15 #16
Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "ID=".

Det er denne linie: set rs = Conn.Execute(strSQL) - den siger fejlen ligger.

Den henter teksten frem, det er når man submitter, at den skriver ovenstående.
Avatar billede eagleeye Praktikant
04. november 2002 - 13:35 #17
har du prøvet at fjerne denne linie: ?

response.redirect("elevoversigt.asp")
Avatar billede mrs Nybegynder
04. november 2002 - 14:13 #18
Ja det har jeg. plus  både med og uden Conn.Close
Avatar billede eagleeye Praktikant
04. november 2002 - 14:33 #19
I update delen bruger du

Cstr(Session("ID"))

Som ID til at opdater er det den rigtiger eller skal det være den ID som du får overføst via linket til siden.

Hvis det er den rigtie ID som ligger i Session så kan du rette denne:
SQL = "SELECT * FROM elevnyhed WHERE ID = " & Request.Querystring("ID")
Til:
SQL = "SELECT * FROM elevnyhed WHERE ID = " & Session("ID")
Avatar billede mjohansen Nybegynder
04. november 2002 - 14:50 #20
Nu kender jeg ikke så meget til Access og hvor "følsom" den er, men det ser ud til der mangler et mellemrum før WHERE.
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