Avatar billede thorkil1 Nybegynder
20. september 2006 - 23:08 Der er 15 kommentarer og
1 løsning

kan ikke skrive til acces-database

Jeg har lavet en asp-løsning i dreamweaver. Alle connections er ok og testede. Jeg kan læse fra databasen og se indholdet i felterne. Men når jeg laver en skriveside (insert record form) og tester virker det ikke... Browseren siger at side ikke kan ses, når jeg klikker på "record" eller accepter knappen...

whats wrong...

mvh
Thorkil
Avatar billede softspot Forsker
20. september 2006 - 23:13 #1
Det kan evt. være noget med skriverettigheder som din webserver ikke har til den mappe hvor databasen ligger...
Avatar billede ldanielsen Nybegynder
21. september 2006 - 00:10 #2
Ja, brugeren IUSR_<computerens navn> skal have skriverettigheder til den mappe som db'en ligger i, samt filer i denne.
Avatar billede ellebaek Nybegynder
21. september 2006 - 09:48 #3
hey torkil1... det behøver dog ikke være skriverettigheder, der kan også være en syntaxfejl i din kode...

Så derfor skal du lige have set den rigtige fejl i scriptet. det gør du ved:

funktioner->internetindstillinger->fanebladet avanceret->Fjern hak i "Vis meddelse om uskadelige HTTP-fejl"

Så prøv at kalde siden igen og skriv fejlen herind..
Avatar billede hingebjerg Nybegynder
21. september 2006 - 14:05 #4
det ser ud som om du kører det på din egen maskine og en iis server. Hvis dete r tilfældet, så kig lige det her link. Det hjalp i hvert fald mig med samme problem.

http://www.webwizguide.info/asp/faq/server_permissions.asp
Avatar billede thorkil1 Nybegynder
25. september 2006 - 11:22 #5
når jeg gør som du skrive Ellebaek så får jeg følgende :

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] You tried to assign the Null value to a variable that is not a Variant data type.

/test_19/skrive3.asp, line 115

det tygger jeg lidt på
(det lykkedes ikke at få min xppro til at køre som webserver, men det fungerer fint at uploade til anden webserver)
Avatar billede ellebaek Nybegynder
25. september 2006 - 13:57 #6
så laver du en fejl i din sql-sætning...

kan du ikke prøve at vise den her..?
Avatar billede thorkil1 Nybegynder
25. september 2006 - 15:21 #7
den kommer også med denne fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] Operation must use an updateable query.

/test30/skrive31.asp, line 111
Avatar billede thorkil1 Nybegynder
25. september 2006 - 15:23 #8
her er hele koden:

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

Dim MM_editAction
Dim MM_abortEdit
Dim MM_editQuery
Dim MM_editCmd

Dim MM_editConnection
Dim MM_editTable
Dim MM_editRedirectUrl
Dim MM_editColumn
Dim MM_recordId

Dim MM_fieldsStr
Dim MM_columnsStr
Dim MM_fields
Dim MM_columns
Dim MM_typeArray
Dim MM_formVal
Dim MM_delim
Dim MM_altVal
Dim MM_emptyVal
Dim MM_i

MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))
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")) = "form1" And CStr(Request("MM_recordId")) <> "") Then

  MM_editConnection = MM_test30_STRING
  MM_editTable = "idebank"
  MM_editColumn = "idebankID"
  MM_recordId = "" + Request.Form("MM_recordId") + ""
  MM_editRedirectUrl = "master30.asp"
  MM_fieldsStr  = "navn|value|skole|value|tekst|value|overskrift|value"
  MM_columnsStr = "navn|',none,''|skole|',none,''|tekst|',none,''|overskrift|',none,''"

  ' create the MM_fields and MM_columns arrays
  MM_fields = Split(MM_fieldsStr, "|")
  MM_columns = Split(MM_columnsStr, "|")
 
  ' set the form values
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_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 MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_formVal = MM_fields(MM_i+1)
    MM_typeArray = Split(MM_columns(MM_i+1),",")
    MM_delim = MM_typeArray(0)
    If (MM_delim = "none") Then MM_delim = ""
    MM_altVal = MM_typeArray(1)
    If (MM_altVal = "none") Then MM_altVal = ""
    MM_emptyVal = MM_typeArray(2)
    If (MM_emptyVal = "none") Then MM_emptyVal = ""
    If (MM_formVal = "") Then
      MM_formVal = MM_emptyVal
    Else
      If (MM_altVal <> "") Then
        MM_formVal = MM_altVal
      ElseIf (MM_delim = "'") Then  ' escape quotes
        MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'"
      Else
        MM_formVal = MM_delim + MM_formVal + MM_delim
      End If
    End If
    If (MM_i <> LBound(MM_fields)) Then
      MM_editQuery = MM_editQuery & ","
    End If
    MM_editQuery = MM_editQuery & MM_columns(MM_i) & " = " & MM_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 Recordset1
Dim Recordset1_numRows

Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_test30_STRING
Recordset1.Source = "SELECT * FROM idebank ORDER BY idebankID DESC"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()

Recordset1_numRows = 0
%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form method="post" action="<%=MM_editAction%>" name="form1">
  <table align="center">
    <tr valign="baseline">
      <td nowrap align="right">Navn:</td>
      <td> <input type="text" name="navn" value="<%=(Recordset1.Fields.Item("navn").Value)%>" size="32">
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Skole:</td>
      <td> <input type="text" name="skole" value="<%=(Recordset1.Fields.Item("skole").Value)%>" size="32">
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Tekst:</td>
      <td> <input type="text" name="tekst" value="<%=(Recordset1.Fields.Item("tekst").Value)%>" size="32">
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">Overskrift:</td>
      <td> <input type="text" name="overskrift" value="<%=(Recordset1.Fields.Item("overskrift").Value)%>" size="32">
      </td>
    </tr>
    <tr valign="baseline">
      <td nowrap align="right">&nbsp;</td>
      <td> <input type="submit" value="Update Record"> </td>
    </tr>
  </table>
  <input type="hidden" name="MM_update" value="form1">
  <input type="hidden" name="MM_recordId" value="<%= Recordset1.Fields.Item("idebankID").Value %>">
</form>
<p>&nbsp;</p>
</body>
</html>
<%
Recordset1.Close()
Set Recordset1 = Nothing
%>
Avatar billede thorkil1 Nybegynder
25. september 2006 - 17:40 #9
den her kode er måske bedre at kigge på :

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

Dim MM_editAction
Dim MM_abortEdit
Dim MM_editQuery
Dim MM_editCmd

Dim MM_editConnection
Dim MM_editTable
Dim MM_editRedirectUrl
Dim MM_editColumn
Dim MM_recordId

Dim MM_fieldsStr
Dim MM_columnsStr
Dim MM_fields
Dim MM_columns
Dim MM_typeArray
Dim MM_formVal
Dim MM_delim
Dim MM_altVal
Dim MM_emptyVal
Dim MM_i

MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))
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 = ""
%>
<%
' *** Insert Record: set variables

If (CStr(Request("MM_insert")) = "form1") Then

  MM_editConnection = MM_ts40_STRING
  MM_editTable = "Tabel1"
  MM_editRedirectUrl = "mast40.asp"
  MM_fieldsStr  = "navn|value|tekst|value"
  MM_columnsStr = "navn|',none,''|tekst|',none,''"

  ' create the MM_fields and MM_columns arrays
  MM_fields = Split(MM_fieldsStr, "|")
  MM_columns = Split(MM_columnsStr, "|")
 
  ' set the form values
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_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
%>
<%
' *** Insert Record: construct a sql insert statement and execute it

Dim MM_tableValues
Dim MM_dbValues

If (CStr(Request("MM_insert")) <> "") Then

  ' create the sql insert statement
  MM_tableValues = ""
  MM_dbValues = ""
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_formVal = MM_fields(MM_i+1)
    MM_typeArray = Split(MM_columns(MM_i+1),",")
    MM_delim = MM_typeArray(0)
    If (MM_delim = "none") Then MM_delim = ""
    MM_altVal = MM_typeArray(1)
    If (MM_altVal = "none") Then MM_altVal = ""
    MM_emptyVal = MM_typeArray(2)
    If (MM_emptyVal = "none") Then MM_emptyVal = ""
    If (MM_formVal = "") Then
      MM_formVal = MM_emptyVal
    Else
      If (MM_altVal <> "") Then
        MM_formVal = MM_altVal
      ElseIf (MM_delim = "'") Then  ' escape quotes
        MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'"
      Else
        MM_formVal = MM_delim + MM_formVal + MM_delim
      End If
    End If
    If (MM_i <> LBound(MM_fields)) Then
      MM_tableValues = MM_tableValues & ","
      MM_dbValues = MM_dbValues & ","
    End If
    MM_tableValues = MM_tableValues & MM_columns(MM_i)
    MM_dbValues = MM_dbValues & MM_formVal
  Next
  MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"

  If (Not MM_abortEdit) Then
    ' execute the insert
    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
Avatar billede ellebaek Nybegynder
25. september 2006 - 22:55 #10
okay... nr. 2 fejl er til at have med at gøre... det betyder at du ikke har skriverettigheder til din database..

som hingebjerg skriver, så se på dette link: http://www.webwizguide.info/asp/faq/server_permissions.asp

er det en lokal server eller er det på nettet?
Avatar billede thorkil1 Nybegynder
27. september 2006 - 22:07 #11
jeg har prøvet både på nettet og på server lokalt på min egen maskine - problemet er det samme :-(
Avatar billede thorkil1 Nybegynder
04. oktober 2006 - 14:46 #12
vil i have pointene så give et svar ;-)....

det tog lang tid!!! men det var naturligvis på webserveren der ikke var givet skriverettigheder..
Det var linket fra ellebaek, der overbeviste server-bestyreren om at det var der fejlen lå - tak for det!!!
Avatar billede ldanielsen Nybegynder
09. oktober 2006 - 00:49 #13
softspot var jo egentlig først ...
Avatar billede softspot Forsker
09. oktober 2006 - 00:58 #14
Hvis der er point til mig i dette, så synes jeg en deler må være på sin plads... :)
Avatar billede thorkil1 Nybegynder
22. januar 2007 - 13:30 #15
tak for hjælpen
Avatar billede softspot Forsker
22. januar 2007 - 17:16 #16
Tak for point :)
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