webForumDet fria alternativet

Fel vid skriva till en databas

ASP

8 svar · 314 visningar · startad av plelkes

Medlem sedan mars 2002823 inlägg
Frågan#1

Hej,
jag har i dagar försökt få ordning på en egenhändigt gjort gästbok. Trots att jag flera gånger har gjort om allt från början, får jag hela tiden samma felmeddelande. Jag kör win98SE och MS Access 2000.

På min skriv- sida ser koden ut som följer

<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="Connections/gastbok.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 = ""
%>
<%
' *** Insert Record: set variables

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

  MM_editConnection = MM_gastbok_STRING
  MM_editTable = "Tabell1"
  MM_editRedirectUrl = "/guestbook.asp"
  MM_fieldsStr  = "Namn|value|E-post|value|Kommentarer|value"
  MM_columnsStr = "Namn|',none,''|E-post|',none,''|Kommentarer|',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
%>
<%
' *** Insert Record: construct a sql insert statement and execute it

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

  ' create the sql insert statement
  MM_tableValues = ""
  MM_dbValues = ""
  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_tableValues = MM_tableValues & ","
      MM_dbValues = MM_dbValues & ","
    End if
    MM_tableValues = MM_tableValues & MM_columns(i)
    MM_dbValues = MM_dbValues & 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

End If
%>
<html>
<head>
<title>skriv</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<form METHOD="POST" name="skriv" action="<%=MM_editAction%>">
  <table width="600" border="0">
    <tr> 
      <td width="68">Namn:</td>
      <td width="522"> 
        <input type="text" name="Namn" size="88">
      </td>
    </tr>
    <tr> 
      <td width="68">E-post</td>
      <td width="522"> 
        <input type="text" name="E-post" size="88">
      </td>
    </tr>
    <tr> 
      <td width="68">Inl&auml;gg</td>
      <td width="522"> 
        <textarea name="Kommentarer" cols="88" rows="10"></textarea>
      </td>
    </tr>
    <tr> 
      <td width="68">&nbsp;</td>
      <td width="522"> 
        <div align="right"> 
          <input type="submit" name="Submit" value="Posta">
        </div>
      </td>
    </tr>
  </table>
  <input type="hidden" name="MM_insert" value="true">
</form>
</body>
</html>

När jag kör i min PWS får jag hela tiden följande fel-meddelande:

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

[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel i INSERT INTO-uttryck.

/gastboken/skriv.asp, rad 90

Snälla ni hjälp mig!

Medlem sedan dec. 200012 464 inlägg
#2
MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"

response.write "SQL:" & MM_editQuery
response.end

Kan du posta resultatet av utskriften?

Medlem sedan mars 2002823 inlägg
#3

Hej Lars,
och tack för ditt svar. Som dock jag tyvärr inte riktigt förstår.
Vilket utskrift menar du? Jag postade ju i mitt ursprungsmeddelande:

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

[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel i INSERT INTO-uttryck.

/gastboken/skriv.asp, rad 90

det är det anda som händer på skärmen.

Sitter just nu på jobbet, men på väg hit läste jag att:

felmeddelande i stil med Microsoft OLE DB Provider for ODBC kan bero på inställningar hos PWS och den mappen där databasen finns skall ha både skriv- och läsrättigheter

  • kan felet verkligen vara så enkelt?
  • dessutom läste jag i samma att jag inte kan ha fältnamn typ: E-post som jag nu har. Stämmer detta och kan detta vara felkällan?
Medlem sedan mars 20025 907 inlägg
#4

Vad LarsG menade var att du skulle lägga till de två kodraderna precis under sql-satsen (se nedanstående kod). När du sedan exekverar (kör) sidan så kommer sql-satsen att skrivas ut. Kopiera den utskrivna satsen och posta den här. Då blir det lättare att se var det är för fel.

MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"

response.write "SQL:" & MM_editQuery
response.end
Medlem sedan juni 200032 967 inlägg
#5

Det kan absolut vara felet att du har bindestreck (minustecken) i fältnamn. Det skall man inte ha.

mvh

Medlem sedan dec. 20003 887 inlägg
#6

Inga tecken förutom underscore '_' är att rekommendera...

Medlem sedan dec. 20002 526 inlägg
#7

klamra?

Medlem sedan mars 2002823 inlägg
#8

Tyvärr har jag ej hunnit med att ändra fältnamnet, men den önskade utskrivten ser ut som följer:

SQL:insert into Tabell1 (Namn,E-post,Kommentarer) values ('peter','ajaja@@','ajkkjala')

Medlem sedan mars 2002823 inlägg
#9

Nu fungerar det efter att jag ändrade från E-post till mail...men det går jätte segt nu när jag testar på min lokala disk Det tar ca 30 sekunder innan det händer ngt.

Ngra förslag varför?
Bifogar sidorna

273 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)