Avatar billede remo27 Nybegynder
24. december 2007 - 14:27 Der er 12 kommentarer og
2 løsninger

upload til database fejl

Jeg fårstår ikke denne her fejl jeg får når jeg prøver at sende noget data til min access database.

Fejltype:
Microsoft JET Database Engine (0x80040E14)
Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket ""Fakta viden Adresse Huset i skoven Skovvej 1 A 9575 Terndrup TLF. 98 17 66 07 Mobil 60 62 95 05 05 E-mail: ninnapeter@mail.dk www.husetiskoven.dk Normering og personale "Huset i skoven" ønsker at rumme 25 børn i alderen 3 mdr. - skolesta".
/web/husetiskoven/public_html/admin/retfakta.asp, line 9


hvem kan hjælpe mig. Og Glædelig jul til alle ;O)

retfakta.asp

<!-- #include file="../databaseforbindelse.asp" -->
<%
id = Request.Form ("id")
Tabelnavn = "info"

If Request.ServerVariables("CONTENT_LENGTH") <> 0 Then ' Opdatering
sql="update info set tekst=""" & (request.form("tekst")) & """  where id=" & request.form("id") 
'response.write sql
conn.execute(sql)
response.redirect "admdefault.asp"
Else
  Id = Request.QueryString ("id")
' ** Inserted by Jon Brohauge 2002/08/02
' ** Hvis der ikke er specificeret et id, så vis liste over alle nyheder sorteret efter dato, nyest først.
  If Id = 0 Then
' ** Vis nyhedsliste
  Set rs=Conn.Execute ("Select * from " & Tabelnavn & " WHERE emne LIKE 'fakta'")
%>

<center>
<br>
<table cellspacing=0 border=0 cellspacing="0" cellpadding="5" width=320>
<tr>
  <td ><b>Overskrift:</b></td>
  <td>&nbsp; </td>
</tr>
<%
  If not(rs.bof or rs.eof) Then
    while not(rs.eof)
%>
<tr>
  <td ><%=rs("emne")%>&nbsp;</td>
  <td ><a href="admdefault.asp?emne=admin&emne2=retfakta&id=<%=rs("id")%>">Ret</a>
  </td>
</tr>
<%
      rs.movenext
    wend
  Else
    Response.Write "Ingen nyheder at rette"
  End If
%>
</table>


<%
  Else
' ** Vis valgte nyhed
  Set rs=Conn.Execute ("Select * from " & Tabelnavn & " Where id=" & Id & "")
%>

<center>

<table cellspacing=0 border=0 cellspacing="0" cellpadding="5" width=320>
<Form Action=retfakta.asp method="post">
<tr>
  <td colspan=2 height=20  width="320" align="center"><b>Ret Fakta tekst:</b>
  </td>
</tr>

<tr>
  <td align=right width="310"><textarea rows="18" name="tekst" cols="50"><%=rs("tekst")%></textarea></td>
</tr>


<tr>
  <td colspan=2 width="310" align="right"><Input type="submit" Value="Ret"></td>
</tr>
<input type="hidden" name="id" value="<%=Id%>">
</form>
</table>

<%
  End If
End If
%>
Avatar billede nielle Nybegynder
25. december 2007 - 09:37 #1
I 9 ud af 10 tilfælde skyldes den slags fejl at sql'en indeholder noget andet end det man forventede.

Derfor er det altid et godt debug-trick at prøve at udskrive sql'en før man afvikler den:

If Request.ServerVariables("CONTENT_LENGTH") <> 0 Then ' Opdatering
    sql = "update info set tekst = """ & request.form("tekst") & """ where id = " & request.form("id")
    Response.Write "DEBUG: " & sql & "<br>"
    'response.write sql
    conn.execute(sql)
    response.redirect "admdefault.asp"
Else
    Id = Request.QueryString ("id")
    ' ** Inserted by Jon Brohauge 2002/08/02
    ' ** Hvis der ikke er specificeret et id, så vis liste over alle nyheder sorteret efter dato, nyest først.
    If Id = 0 Then
        ' ** Vis nyhedsliste
        Set rs=Conn.Execute ("Select * from " & Tabelnavn & " WHERE emne LIKE 'fakta'")
Avatar billede mitbrugernavn Praktikant
25. december 2007 - 10:32 #2
er det denne linie

sql="update info set tekst=""" & (request.form("tekst")) & """  where id=" & request.form("id") 
????

det ser ud til at du har sat 2 " for meget

sql="update info set tekst='" & request.form("tekst") & "'  where id=" & request.form("id")
Avatar billede softspot Forsker
25. december 2007 - 14:55 #3
Som mitbrugernavn skriver, er det fordi du bruger anførselstegn i stedet for apostroffer. Det er apostroffer der er strengafgrænsere i SQL. Dog vil jeg anbefale at du bruger Command-objektet i stedet, da du så helt undgår dette problem.

Command-objektet kan bruges således:

id = request.form("id") & ""
tekst = request.form("tekst") & ""

sql = "update info set tekst = ? where id = ?" 

set cmd = Server.CreateObject("ADODB.Command")
set cmd.ActiveConnection = conn
cmd.CommandType = adCmdText
cmd.CommandText = sql
cmd.Parameter.Append cmd.CreateParameter("@tekst", adVarChar, adParamInput, len(tekst)+1, tekst)
cmd.Parameter.Append cmd.CreateParameter("@id", adInteger, adParamInput, 4, id)
cmd.Execute

Hvis du vil bruge ADO-konstanter som jeg har gjort her (f.eks. adCmdText), så skal du enten inkludere en fil hvor alle konstanterne bliver defineret (eller vælge at definere dem du bruger), eller du kan lægge denne linie ind i siden der bruger konstanterne eller for mig at se den bedste løsning - i global.asa. Hvis du lægger den i global.asa, så skal du ikke tænke mere på den i resten af applikationen:

<!-- METADATA TYPE="typelib" uuid="00000205-0000-0010-8000-00AA006D2EA4"  -->
Avatar billede remo27 Nybegynder
28. december 2007 - 12:06 #4
nielle og mitbrugernavn>> har prøvet jeres løsninger uden held :O(
Avatar billede softspot Forsker
28. december 2007 - 12:58 #5
Har du prøvet min udgave?
Avatar billede softspot Forsker
28. december 2007 - 13:20 #6
Jeg ville i øvrigt selv foretrække at benytte

If UCase(Request.ServerVariables("REQUEST_METHOD")) = "POST" Then ' Opdatering

til at kontrollere om der er tale om et "postback", frem for:

If Request.ServerVariables("CONTENT_LENGTH") <> 0 Then ' Opdatering
Avatar billede nielle Nybegynder
28. december 2007 - 13:26 #7
Hvad mener du med at du har prøvet uden held? Min kode var skam ikke tænkt til at løse problemet - kun at sætte dig i stand til at kigge på SQL-sætningen for at give dig mulighed for at finde fejlen.

Personligt tror jeg at det er den som påpeges i 25/12-2007 10:32:38 - men du fortæller at den heller ikke løste problemet?

Prøv derfor at poste debug-udskriften her så vi kan se den.
Avatar billede softspot Forsker
28. december 2007 - 13:39 #8
Ja, det lyder som om den fortolker den tekst du smider ind, som en SQL-sætning og det tyder på at sætningen er afsluttet forkert, fordi du benytter strengsammensætning til at danne din SQL-sætning. Du kan enten bruge det jeg foreslog (men som åbenbart ikke tiltaler dig) eller du kan prøve at udvide mitbrugernavn's forslag til at omfatte en udskiftning af apostroffer i teksten, således:

sql="update info set tekst='" & replace(request.form("tekst"),"'","''") & "'  where id=" & request.form("id")
Avatar billede nielle Nybegynder
07. januar 2008 - 18:00 #9
Er du kommet vidre med denne her?
Avatar billede nielle Nybegynder
14. januar 2008 - 18:30 #10
??
Avatar billede remo27 Nybegynder
14. januar 2008 - 20:28 #11
undskyld alle sammen, har haft et par andre web-projekter at kigge på.
men jeg kigger snart på det igen.
Avatar billede remo27 Nybegynder
19. januar 2008 - 00:33 #12
med røde øre, har jeg fundet fejlen mit script virker fint, men det der går galt i teksten som jeg skulle rette i, er at der nogle steder er "" om nogle ord, dem har jeg rettet til ' '. beklager jeg ikke har tænkt på det. :O(
Dem af jer som vil have point dropper et svar
Avatar billede mitbrugernavn Praktikant
19. januar 2008 - 10:00 #13
;-)) - fint nok
Avatar billede nielle Nybegynder
20. januar 2008 - 09:42 #14
Det sker fo os all :^)
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