Avatar billede jnrmgs Juniormester
18. juni 2004 - 15:26 Der er 4 kommentarer og
2 løsninger

Opdatering af database

Hej!

Jeg er ved at lave en side på en database, hvor det skal være muligt at ændre i bestemt post i databasen.

Koden er:

<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="Connections/Videodatabase.asp" -->
<%
' *** Edit Operations: declare variables

MM_editAction = CStr(Request("URL"))
If (Request.QueryString <> "") Then
  MM_editAction = MM_editAction & "?" & Request.QueryString
End If

' boolean to abort record edit
MM_abortEdit = false

' query string to execute
MM_editQuery = ""
%>
<%
' *** Update Record: set variables

If (CStr(Request("MM_update")) <> "" And CStr(Request("MM_recordId")) <> "") Then

  MM_editConnection = MM_Videodatabase_STRING
  MM_editTable = "Videodatabase"
  MM_editColumn = "Titel"
  MM_recordId = "'" + Request.Form("MM_recordId") + "'"
  MM_editRedirectUrl = "opdater.asp"
  MM_fieldsStr  = "Nummer|value|Titel|value|Land|value|Aar|value|Instruktoer|value|Skuespillere|value|Billede|value"
  MM_columnsStr = "Nummer|',none,''|Titel|',none,''|Land|',none,''|Aar|',none,''|Instruktoer|',none,''|Skuespillere|',none,''|Billede|',none,''"

  ' create the MM_fields and MM_columns arrays
  MM_fields = Split(MM_fieldsStr, "|")
  MM_columns = Split(MM_columnsStr, "|")
 
  ' set the form values
  For i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_fields(i+1) = CStr(Request.Form(MM_fields(i)))
  Next

  ' append the query string to the redirect URL
  If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then
    If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then
      MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString
    Else
      MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString
    End If
  End If

End If
%>
<%
' *** Update Record: construct a sql update statement and execute it

If (CStr(Request("MM_update")) <> "" And CStr(Request("MM_recordId")) <> "") Then

  ' create the sql update statement
  MM_editQuery = "update " & MM_editTable & " set "
  For i = LBound(MM_fields) To UBound(MM_fields) Step 2
    FormVal = MM_fields(i+1)
    MM_typeArray = Split(MM_columns(i+1),",")
    Delim = MM_typeArray(0)
    If (Delim = "none") Then Delim = ""
    AltVal = MM_typeArray(1)
    If (AltVal = "none") Then AltVal = ""
    EmptyVal = MM_typeArray(2)
    If (EmptyVal = "none") Then EmptyVal = ""
    If (FormVal = "") Then
      FormVal = EmptyVal
    Else
      If (AltVal <> "") Then
        FormVal = AltVal
      ElseIf (Delim = "'") Then  ' escape quotes
        FormVal = "'" & Replace(FormVal,"'","''") & "'"
      Else
        FormVal = Delim + FormVal + Delim
      End If
    End If
    If (i <> LBound(MM_fields)) Then
      MM_editQuery = MM_editQuery & ","
    End If
    MM_editQuery = MM_editQuery & MM_columns(i) & " = " & FormVal
  Next
  MM_editQuery = MM_editQuery & " where " & MM_editColumn & " = " & MM_recordId

  If (Not MM_abortEdit) Then
    ' execute the update
    Set MM_editCmd = Server.CreateObject("ADODB.Command")
    MM_editCmd.ActiveConnection = MM_editConnection
    MM_editCmd.CommandText = MM_editQuery
    MM_editCmd.Execute
    MM_editCmd.ActiveConnection.Close

    If (MM_editRedirectUrl <> "") Then
      Response.Redirect(MM_editRedirectUrl)
    End If
  End If

End If
%>
<%
Dim opdater__MMColParam
opdater__MMColParam = "1"
if (Request.QueryString("opdater") <> "") then opdater__MMColParam = Request.QueryString("opdater")
%>
<%
set opdater = Server.CreateObject("ADODB.Recordset")
opdater.ActiveConnection = MM_Videodatabase_STRING
opdater.Source = "SELECT * FROM Videodatabase WHERE Titel = '" + Replace(opdater__MMColParam, "'", "''") + "'"
opdater.CursorType = 0
opdater.CursorLocation = 2
opdater.LockType = 3
opdater.Open()
opdater_numRows = 0
%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="Css/Css.css" type="text/css">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<form ACTION="<%=MM_editAction%>" METHOD="POST" name="form1">
  <p> Nummer:
    <input type="text" name="Nummer" value="<%=(opdater.Fields.Item("Nummer").Value)%>">
  </p>
  <p> Titel:
    <input type="text" name="Titel" value="<%=(opdater.Fields.Item("Titel").Value)%>">
  </p>
  <p>Land:
    <input type="text" name="Land" value="<%=(opdater.Fields.Item("Land").Value)%>">
  </p>
  <p>&Aring;r:
    <input type="text" name="Aar" value="<%=(opdater.Fields.Item("Aar").Value)%>">
  </p>
  <p>Instrukt&oslash;r:
    <input type="text" name="Instruktoer" value="<%=(opdater.Fields.Item("Instruktoer").Value)%>">
  </p>
  <p>Skuespillere:
    <textarea name="Skuespillere" rows="20" cols="50"><%=(opdater.Fields.Item("Skuespillere").Value)%></textarea>
  </p>
  <p>Billeder:
    <input type="text" name="Billede" value="<%=(opdater.Fields.Item("Billede").Value)%>">
  </p>
  <p>
    <input type="submit" name="Submit" value="Submit">
  </p>
  <input type="hidden" name="MM_recordId">
  <input type="hidden" name="MM_update" value="true">
  <input type="hidden" name="MM_recordId" value="<%= opdater.Fields.Item("Titel").Value %>">
</form>
</body>
</html>
<%
opdater.Close()
%>



Når jeg så klikker "Submit", kommer følgende fejlmeddelelse:

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access-driver] Handlingen skal bruge en opdaterbar forespørgsel.
/Videodatabase/opdater.asp, line 89


Håber nogen kan finde fejlen. Det hele er lavet i dreamweaver. Jeg vil gerne være fri for at skulle ind i Access for at opdatere databasen.
Avatar billede keysersoze Ekspert
18. juni 2004 - 15:29 #1
Avatar billede jnrmgs Juniormester
18. juni 2004 - 16:13 #2
Jeg ved ikke helt hvordan jeg skal få rettighederne ændret. Jeg har væres inde i IIS, og sat et flueben i "Skriveadgang" i den virtuelle mappe, hvor min database ligger.

Der kommer stadig samme fejlmeddelelse.

Er der andre steder der kan have noget at gøre med det, eller er det en helt anden fejl?
Avatar billede jnrmgs Juniormester
18. juni 2004 - 16:39 #3
Efter at jeg har slettet den virtuelle mappe i IIS, og oprettet den på ny (med skriveadgang) kommer fejlmeddelelsen ikke længere.

Men der bliver desværre ikke opdateret noget som helst i databasen, uanset hvor meget jeg skriver!

Hvad kan der være galt?
Avatar billede keysersoze Ekspert
18. juni 2004 - 20:29 #4
jeg kan ikke helt gennemskue hvad det er DW laver så den kan jeg ikke klare. Kig evt på www.html.dk og lav det i hånden så du selv ved hvad der sker
Avatar billede jnrmgs Juniormester
02. juli 2004 - 13:08 #5
-
Avatar billede jnrmgs Juniormester
02. juli 2004 - 13:09 #6
Jeg ved ikke hvad der var galt, men jeg prøvede at lave det forfra i Dreamweaver, og så virkede det!
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