Avatar billede annettef Nybegynder
23. august 2005 - 10:09 Der er 6 kommentarer og
2 løsninger

Problemer med update funktion mm

Hej

Jeg har lavet et administratinssytem i asp til en hjemmeside. Jeg er i øjeblikket ved at flytte hele siden til en ny server, og har i den forbindelse fået problemer med at gemme tekster, foto og andre filer i min database.

Når jeg f.eks forsøger at opdatere / tilføje noget til en eksisterende tekst, får jeg følgende fejl:

Microsoft JET Database Engine error '80004005'

Operation must use an updateable query.

/admin/rediger_ukategori3A.asp, line 90

Filen er denne
::::rediger_ukategori3A.asp::::
<%
Dim Conn, DSN, retid, strSQL, rs, strGammelTekst, frmRetid, strOverskrift, strIndhold, strTekstKat
Response.Buffer=True
%>
<!--#INCLUDE FILE="config.inc"-->
<!--#INCLUDE FILE="level2.inc"-->
<!--#include file="dbconn.inc"--><!-- Database forbindelse oprettes via ekstern fil-->
<html>

<head>
<title>TELE IT COMMUNICATION ApS</title>
<Link Rel="stylesheet" href="tele-it.css" Type="text/css" > <!-- link til ekstern style sheet -->
<style type="text/css">
<!--
.style1 {color: #FFFFFF}
body {
    margin-left: 4px;
    margin-top: 0px;
}
-->
</style>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>

<body>
<br>
<table width="670" border="0" align="left"><!--Hovedtabel start-->
  <tr>
    <td height="18" valign="middle" bgcolor="#969696"><span class="style1">Rediger tekst</span></td>
  </tr>
<tr><td>

<%
If Request.Querystring("retid") <> "" Then

  retid = Request.Querystring("retid")

  strSQL ="Select * From tekst Where tekstId =" & retid
  Set rs = Conn.Execute(strSQL)
 
  'intTekstNr = rs("tekstNr")
 
  do while not rs.eof
%>

  <FORM method="post" action="rediger_ukategori3A.asp" name="rediger">
  <table border=0 cellspacing=0 cellpadding=0 width="660" align=left><!--Indholdstabel start-->
  <tr><td height="10">
  Overskrift: <br>
  <input type="text" name="overskrift" size="100" value="<%Response.Write rs("Overskrift")%>">
</td></tr><tr>
            <td height="180">
              <%strGammelTekst=replace(rs("indhold"), "<br>", vbcrlf)%>
              <br>
              Tekst<br>
              <textarea name="indhold" rows="15" cols="75" wrap="VIRTUAL"><%Response.Write strGammelTekst%></textarea>
            </td>
          </tr><tr><td height="5">
  <input type="hidden" NAME="frmRetid" value="<%Response.Write Request.Querystring("retid")%>">
  <input type="hidden" NAME="TekstNr" value="<%Response.Write rs("tekstNr")%>">
  <INPUT TYPE="Submit" VALUE="Gem ændring">
  &nbsp;
  <INPUT TYPE="Reset" VALUE="Fortryd">
  &nbsp;
  <input type="button" value="Tilbage til kategorioversigt" name="Annuller" onClick="java script:location.href='rediger_ukategori1.asp?'">
  </td>
          </tr>
          <tr>
            <td align="right">&nbsp;</td>
          </tr>
  </table> 
  </FORM>

<%
  'Gå til næste Record i rs
  rs.MoveNext

  'Fortsæt indtil rs er gennemløbet (EOF = End Of File)
  loop

Elseif Request.Querystring("retid") = "" Then

  frmRetid = Request.Form("frmRetid")
  tekstNr = Request.Form("TekstNr")

  strIndhold = Replace(Request.Form("indhold"), vbcrlf, "<br>")
  strIndhold = Replace(strIndhold, "'", "''")
  strOverskrift = Replace(Request.Form("overskrift"), "'", "''")
 
  strSQL = "Update tekst Set indhold='" & strIndhold & "', overskrift= '" & strOverskrift & "' Where tekstId=" & frmRetid
  Conn.Execute(strSQL)

  Response.Redirect ("rediger_ukategori3.asp?intTekstNr="& TekstNr)
 
End if
%>

<center>
</center>

    </td>
  </tr>
</table><!--indholdstabel slut-->

</body>
</html>
::::SLUT::::

Linie 90 er følgende
85  strIndhold = Replace(Request.Form("indhold"), vbcrlf, "<br>")
86  strIndhold = Replace(strIndhold, "'", "''")
87  strOverskrift = Replace(Request.Form ("overskrift"), "'", "''")
88 
89  strSQL = "Update tekst Set indhold='" & strIndhold & "', overskrift= '" & strOverskrift & "' Where tekstId=" & frmRetid
90  Conn.Execute(strSQL)
91
92  Response.Redirect ("rediger_ukategori3.asp?intTekstNr="& TekstNr)

Alle min filer til selve hjemmesiden ligger i en hovedmappe (docs). Alle mine admin filer ligger i mappen admin som ligger inden i hovedmappen (docs). Min database ligger i hovedmappen

Min include fil med databaseforbindelsen ser således ud:
<%
' Filnavn: dbconn.inc

' Databaseforbindelse - husk at angive den rigtige sti til databasen!
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../tele-it.mdb")
Conn.Open DSN
%>

Håber der er nogen der kan se hvad fejlen er?

/Annette
Avatar billede compilos Nybegynder
23. august 2005 - 10:13 #1
Så vidt jeg husker - Jeg tror ikke du har skriverettigheder i folderen hvor din database ligger!.

/Compilos
Avatar billede annettef Nybegynder
23. august 2005 - 10:19 #2
Hvis jeg går ind i mit ftp program og vælger egenskaber for mappen docs, så er der sat flueben i write - det er der også ved min database fil...

/Annette
Avatar billede fennec Nybegynder
23. august 2005 - 10:29 #3
At du har skriverettighed gennem FTP er mig bekendt ikke det samme som IUSRxxx brugeren har skriverettighed.

Din udbyder har ikke oprettet en DB mappe?? Det plejer de fleste at have, og databasen skal placeres heri.
Avatar billede annettef Nybegynder
23. august 2005 - 10:37 #4
Der er oprettet en mappe der hedder databaser. Siden jeg sidder og arbejder på er til en kunder, og kunden påstår at jeg ikke må ligge databsefilen i den mappe.

Jeg mener også selv at filen bør ligge i database mappen - så det tror jeg lige jeg vil prøve alligevel....så jeg vender lige tilbage.

Tak for hjælpen forløbigt!

/Annette
Avatar billede annettef Nybegynder
23. august 2005 - 11:06 #5
Okay nu har jeg flyttet databasefilen over i database mappen og nu fungere det fint. Nu er der bare opstået et andet problem. Jeg kan ikke få lov til at uploade billedefiler og pdf dokumenter.

Tror du også det har noget med rettigheder at gøre at jeg ikke kan få lov til det?
Udbyderen er TDC hvis det har nogen betydning...

Læg et svar, så kan du få point fordi du hjalp med mit først problem.

/Annette
Avatar billede compilos Nybegynder
23. august 2005 - 11:15 #6
Det er helt sikkert at du ikke har skriverettigheder til andre folder.
Har selv engang rodet med det (TDC).

Tror (Kun) du kan få det løst ved at skifte udbyder!.
Avatar billede annettef Nybegynder
23. august 2005 - 11:19 #7
Jeg har netop kontaktet min kunde og foreslået at de skifter udbyder...

Fennec vil du også lægge et svar for det var jo egentligt også dig der ledte mig på rette spor...så kan I dele point.

/Annette
Avatar billede fennec Nybegynder
23. august 2005 - 11:19 #8
Kender desværre ikke til TDC web opbygning, så jeg kan kun give dig et "næsten" svar. Normalt har man 2 (3) mapper. En DB mappe, en upload mappe, og evt en web mappe, men denne kan godt bare være rod.

DB mappen er skjult, og kan ikke tilgåes fra web udover gennem script. På denne måde kan database filerne ikke downloades ved at skrive stien i adresselinjen.

Upload mappen er det eneste sted filer kan uploades. Hvis det er rigtig godt lavet, kan ASP filer ikke køres fra denne mappe, så fremmed ikke kan oploade ASP filer, med skadelig kode.
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