16. oktober 2002 - 10:55
Der er
19 kommentarer
Syntax error
I min rettefunktion i mit nyhedsmodul får jeg denne fejl: Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement. /admin/administrator/ret.asp, line 112 Jeg har så prøvet at response.write(strSQL) og får så denne besked: Update News Set Date='', Subject= '', Text= '' Where ID=; Er der nogen der kan hjælpe mig? Koden på hele siden er: <!-- #INCLUDE FILE="../brugercheck.inc" --> <!--------#include file="../pro-lag.inc"-----> <% 'Option Explicit Dim Conn, DSN, retid, strSQL, rs, frmRetid, strDate, strSubject, strText Response.Buffer=false %> <% Set Conn = Server.CreateObject("ADODB.Connection") connString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../../log/safarinews.mdb") Conn.Open connString %> <html> <head> <title>Ret Menu</title> </head> <body background="../images/t.gif" topmargin="15"> <br><br> <div align="center"> <center> <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="650" id="AutoNumber3"> <tr> <td width="150" style="border-bottom: 1px solid #000000" > </td> <td width="500" style="border-bottom: 1px solid #000000" ><font face="verdana" size="2">Administration i det valgte område = <font color="#FF0000">Nyheder</font></font></td> </tr></table> </center> </div> <div align="center"> <center> <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="650" id="AutoNumber2"> <tr> <td width="150" valign="top"><!---#include file="menu_includ.asp"---></td> <td width="500"> <% If Request.Querystring("retid") <> "" Then retid = Request.Querystring("retid") strSQL ="Select * From News Where ID =" & retid Set rs = Conn.Execute(strSQL) do while not rs.eof %> <FORM method="post" name="ret" action="ret_main.asp"> <div align="center"> <center> <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="500" id="AutoNumber1"> <tr> <td width="100%" align="left"> </td> </tr> </table> </center> </div> <div align="center"> <center> <table border="0" cellpadding="0" cellspacing="0" width="500" height="106" bordercolor="#111111" > <tr> <td width="100" height="25" ><font face="verdana" size="2"><b> Ændret den:</b></font></td> <td width="400" height="25" colspan="2" ><INPUT name="Dato" size="40" value="<%Response.Write rs("Date")%>"></td> </tr> <tr> <td width="100" height="25" ><font face="verdana" size="2"><b> Overskrift:</b></font></td> <td width="400" height="25" colspan="2" ><INPUT name="Navn" size="40" value="<%Response.Write rs("Subject")%>"></td> </tr> <tr> <td width="100" height="25" valign="top" ><font face="verdana" size="2"><b> Tekst:</b></font></td> <td width="400" height="25" colspan="2" ><textarea rows="4" cols="30" name="Tekst"><%Response.Write rs("Text")%></textarea></td> </tr> <tr> <td width="100" height="25" ><font face="verdana" size="2"><b> </b></font></td> <td width="156" height="25" > <align="center"> <input type="hidden" NAME="frmRetid" value="<%Response.Write Request.Querystring("retid")%>"> <INPUT type="submit" value="UPDATE" style="font-family: Verdana; font-size: 8pt"></td> <td width="244" height="25" > </td> </tr> <tr> <td width="100"> <align="center"> </td> </tr> </table> </center> </div> </td> </FORM> <% rs.MoveNext loop Elseif Request.Querystring("retid") = "" Then frmRetid = Request.Form("frmRetid") strDate = Replace(Request.Form("Date"), vbcrlf, "<br>") ' strDate = Replace(strDate, "'", "''") strSubject = Replace(Request.Form("Subject"), "'", "''") strText = Replace(Request.Form("Text"), "'", "''") strSQL = "Update News Set Date='" & strDate & "', Subject= '" & strSubject & "', Text= '" & strText & "' Where ID=" & frmRetid & ";" response.write(strSQL) 'Conn.Execute(strSQL) 'Response.Redirect ("ret_main.asp") End if %> </td> </tr> </table> </center> </div> </body> </html>
Annonceindlæg fra Computerworld it-jobbank
16. oktober 2002 - 11:01
#1
Prøv at rette din update til: strSQL = "Update News Set Date='" & strDate & "', Subject= '" & strSubject & "', Text= '" & strText & "' Where ID=" & frmRetid
16. oktober 2002 - 11:08
#2
Resultatet er det samme
16. oktober 2002 - 11:10
#3
"Date" og "Text" kunne godt være reserverede ord, derfor klammer om. Hvis Date er et datofelt i databasen, skal det se således ud: strSQL = "Update News Set [Date]=#" & strDate & "#, Subject= '" & strSubject & "', [Text]= '" & strText & "' Where ID=" & frmRetid Datoen i strDate skal være i amrikansk format (mm-dd-yyyy)
16. oktober 2002 - 11:17
#4
skal jeg sætte (mm-dd-yyyy) ind i SQL stringen altså: [Date]='" & str(mm-dd-yyyy)
16. oktober 2002 - 11:37
#5
Indholdet i strDate skal være en dato i amerikansk format. I dag er fx "10-16-20002". Og der skal # om i stedet for '
Se også mit svar på
http://www.eksperten.dk/spm/246418
16. oktober 2002 - 12:04
#6
Det giver ikke det store resultat: Efter response.write(strSQL) Update News Set [Date]=##, Subject= '', [Text]= '' Where ID=
16. oktober 2002 - 12:47
#7
feltet i din form hedder Dato, ikke date. Tilsvarende med feltet Tekst (ikke text)
16. oktober 2002 - 13:16
#8
Ja det var da noget af en brøler:) Jeg har nu prøvet at rette det til, men jeg er ikke sikker på at jeg forstår det rigtig: <table border="0" cellpadding="0" cellspacing="0" width="500" height="106" bordercolor="#111111" > <tr> <td width="100" height="25" ><font face="verdana" size="2"><b> Ændret den:</b></font></td> <td width="400" height="25" colspan="2" ><INPUT name="Dato" size="40" value="<%Response.Write rs("Date")%>"></td> </tr> <tr> <td width="100" height="25" ><font face="verdana" size="2"><b> Overskrift:</b></font></td> <td width="400" height="25" colspan="2" ><INPUT name="Overskrift" size="40" value="<%Response.Write rs("Subject")%>"></td> </tr> <tr> <td width="100" height="25" valign="top" ><font face="verdana" size="2"><b> Tekst:</b></font></td> <td width="400" height="25" colspan="2" ><textarea rows="4" cols="30" name="Tekst"><%Response.Write rs("Text")%></textarea></td> </tr> <tr> <td width="100" height="25" ><font face="verdana" size="2"><b> </b></font></td> <td width="156" height="25" > <align="center"> <input type="hidden" NAME="frmRetid" value="<%Response.Write Request.Querystring("retid")%>"> <INPUT type="submit" value="UPDATE" style="font-family: Verdana; font-size: 8pt"></td> <td width="244" height="25" > </td> </tr> <tr> <td width="100"> <align="center"> </td> </tr> </table> </center> </div> </td> </FORM> <% rs.MoveNext loop Elseif Request.Querystring("retid") = "" Then frmRetid = Request.Form("frmRetid") ' strDate = Replace(Request.Form("Date"), vbcrlf, "<br>") strDato = Replace(strdato, "'", "''") strOverskrift = Replace(Request.Form("overskrift"), "'", "''") strTekst = Replace(Request.Form("tekst"), "'", "''") strSQL = "Update News Set Date='" & strDato & "', Subject= '" & strOverskrift & "', Text= '" & strTekst & "' Where ID=" & frmRetid 'response.write(strSQL) Conn.Execute(strSQL) Response.Redirect ("ret_main.asp") End if %> Jeg får stadig samme fejlbeskrivelse?
16. oktober 2002 - 13:18
#9
Jeg har også prøvet med denne SQL string: strSQL = "Update News Set [Date]=#" & strDate & "#, Subject= '" & strSubject & "', [Text]= '" & strText & "' Where ID=" & frmRetid men samme resultat?
16. oktober 2002 - 13:25
#10
strSQL = "Update News Set [Date]=#" & strDato & "#, Subject= '" & strOverskrift & "', [Text]= '" & strTekst & "' Where ID=" & frmRetid
16. oktober 2002 - 13:29
#11
Nu får du vist ikke datoen fra formen med (linien er rem'et ud) Jeg må erkende jeg ikke helt kan følge flow'et Du har en side med en form. Når form'en subittes, skal kontrollen gives videre til en ny asp-side (den nævnt i action=), som opdaterer databasen.
16. oktober 2002 - 13:33
#12
Det er samme side
16. oktober 2002 - 13:38
#13
Sluder, det er mig der er ved at køre helt vild i det ret_main.asp ser sådan ud: <!--------#include file="../pro-lag.inc"-----> <!-- #INCLUDE FILE="../brugercheck.inc" --> <% Dim Conn, DSN, sltid, strSQL, rs Response.Buffer=false %> <% Set Conn = Server.CreateObject("ADODB.Connection") connString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../../log/safarinews.mdb") Conn.Open connString %> <% sltid = Request.Querystring("sltid") If sltid <> "" Then SQL = "Delete From News Where ID = " & Request.Querystring("sltid") Conn.Execute(SQL) Response.Redirect ("ret_main.asp") Response.Write ("Den valgte nyhed er nu slettet!") Else end if %> <html> <head> <title>Ret menukortet - ret.asp</title> <LINK href="../style_test.css" type=text/css rel=stylesheet> <script language="JavaScript"> function erdusikker() { sikker = confirm('Er du helt sikker??? Du kan ikke fortryde dit valg!'); if(sikker == true) { return true; } else { return false; } } </script> </head> <body BACKGROUND="../IMAGES/T.GIF" bgproperties="fixed" topmargin="15"> <br><br> <div align="center"> <center> <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="650" id="AutoNumber3"> <tr> <td width="150" style="border-bottom: 1px solid #000000" > </td> <td width="500" style="border-bottom: 1px solid #000000" ><font face="verdana" size="2">Administration i det valgte område = </font><font face="verdana" size="2" color="#FF0000">Nyheder</font></td> </tr></table> </center> </div> <div align="center"> <center> <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="650" id="AutoNumber2"> <tr> <td width="150" valign="top"><!---#include file="menu_includ.asp"---></td> <td width="500" valign="top"> <FORM method="get" name="navn" action="ret_main.asp"> <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber3"> <tr> <td width="26" bgcolor="#FFCC66"><p align="center"><b><font face="Verdana" size="1">| RET |</font></b></td> <td width="32" bgcolor="#FFCC66"><p align="center"><b><font face="Verdana" size="1"> SLET |</font></b></td> <td width="325" bgcolor="#FFCC66"><b><font face="Verdana" size="1">TEKST</font></b></td> <td width="81" bgcolor="#FFCC66"><b><font face="Verdana" size="1">| ÆNDRING</font></b></td> </tr> <% If Request.QueryString("Id") = "tom" Then ElseIf Request.QueryString("Id") = "" Then %> <% Set rs = Conn.Execute("SELECT * FROM " & Request.QueryString("tabel")) Do While Not rs.EOF %> <tr> <td width="26"><font face="Verdana" size="1" color="#FFFFFF"><p align="center"><a href="ret.asp?id=<%=rs("ID")%>"><img name="p2" border="0" src="ret.gif" onMouseover="changeImg('ret1.gif', 'p2')" onMouseout="changeImg('ret.gif', 'p2')"></a></font></td> <td width="32"><font face="Verdana" size="1" color="#FFFFFF"><p align="center"><%Response.Write "<a href='ret_main.asp?sltid=" & rs("ID") & "' onclick='return(erdusikker())')><img border=0 src=delete.gif></a>"%></font></td> <td width="325" valign="top"><b><font face="Verdana" size="1" color="#000000"><%=rs("Subject")%></b><br><%Response.Write rs("Text")%></font></td> <td width="81" valign="bottom"><font face="Verdana" size="1" color="#000000"><p align="center"><%=rs("Date")%></font></td> </tr> <tr> <td width="519" colspan="4"> <p align="center"><font style="font-size: 6pt"></font></p><hr color="#FFCC66" width="91%" size="1"></td> </tr> <% rs.MoveNext loop End if ' End if Conn.Close Set Conn = Nothing %> </table> </FORM> </td> </tr> </table> </center> </div> </body> </html>
16. oktober 2002 - 13:59
#14
Der er nok ingen vej uden om, at du sætter dig grundigt ind i, hvad der foregår. Indsæt <% response.write "linie nnn - nu er værdien af xxx:" & xxx & "<br>" %> på passende steder i koden, så du kan følge med. Ret det til trin for trin, så kommer til at virke. Sådan gør de fleste andre.
16. oktober 2002 - 14:02
#15
Jeg for søger virkelig, men det har svær ved at trænge ind i mit hoved:) Jeg prøver!
16. oktober 2002 - 14:13
#16
Er det rigtigt forstået at du forsøger at afvikle følgende SQL mod databasen: "Update News Set [Date]=##, Subject= '', [Text]= '' Where ID=" Hvis det er tilfældet, skyldes syntaks fejlen at der ikke er angivet et ID, hvilket så igen vel skyldes at du ikke får hentet de korrekte form-felter med i din SQL. Håber det hjælper...
16. oktober 2002 - 14:25
#17
<% response.write SQL & "<br>" %> lige før eksekvering af en query er altid nyttig ved test. Masser af spørgsmål ville aldrig blive stillet her på eksperten, hvis folk bare huskede dét.
16. oktober 2002 - 14:26
#18
Hej igen. Efter lige at have kigget i din kode, vil jeg mene at du skal være varsom med følgende linje: Set rs = Conn.Execute("SELECT * FROM " & Request.QueryString("tabel")) Eftersom en ondsindet person kunne give dig følgende url: ret_main.asp?table=news;drop table news; hvilket medfører følgende SQL: SELECT * FROM News; drop table News; (som dog ikke kan afvikles på en Access database, men uden videre kan afvikles mod f.eks. MS SQL Server)
16. oktober 2002 - 14:51
#19
Jeg prøver at fumle mig frem med jeres forslag og vender tilbage senere.
Kurser inden for grundlæggende programmering