04. maj 2002 - 00:31
Der er
38 kommentarer og 4 løsninger
hvor er min UPDATE fejl?
Jeg vil gerne Update min Access DB men får denne fejl: Error Type: Microsoft JET Database Engine (0x80040E14) Syntax error in UPDATE statement. /e-test/Booking/_retbrugerdata.asp, line 8 Linje 8 Conn.Execute(strSQL) <% ' strSQL sætning opbygges strSQL ="UPDATE tbl_bruger set Bruger = '" & request.form("Email") & "', Navn ='" & request.form("Navn") & "', Adresse ='" & request.form("Adresse") & "', Adresse2 ='" & request.form("Adresse2") & "', Postnr ='" & request.form("Postnr") & "', City ='" & request.form("City")& "', Land ='" & request.form("Land")& "', Email ='" & request.form("Email")& "', Level ='" & request.form("Level") & "' where Bruger=" & session("Ebruger") ' strSQL sætning eksekveres Conn.Execute(strSQL) ' Luk databaseforbindelse Conn.Close Set Conn = Nothing response.redirect ("editburger.asp") %> Håber I har bedre øjne end mig :> Gizom
Annonceindlæg fra Computerworld
Der manler et " i slutningen af dit statement : strSQL ="UPDATE tbl_bruger set Bruger = '" & request.form("Email") & "', Navn ='" & request.form("Navn") & "', Adresse ='" & request.form("Adresse") & "', Adresse2 ='" & request.form("Adresse2") & "', Postnr ='" & request.form("Postnr") & "', City ='" & request.form("City")& "', Land ='" & request.form("Land")& "', Email ='" & request.form("Email")& "', Level ='" & request.form("Level") & "' where Bruger=" & session("Ebruger")"
Til allersidst i update-statement'et - prøv at skrive ".. where Bruger='" & session("Ebruger") & "'". På dansk - husk apostrofferne - det kan give problemer ellers med længere brugernavne. For at få et lidt bedre overblik, prøv så at adskille dine &-tegn som forbinder sætningen, med et mellemrum alle steder. Håber du får bare lidt ud af det her..
Det medfører denne fejl: Error Type: Microsoft VBScript compilation (0x800A0409) Unterminated string constant /e-test/Booking/_retbrugerdata.asp, line 5, column 434 strSQL ="UPDATE tbl_bruger set Bruger = '" & request.form("Email") & "', Navn ='" & request.form("Navn") & "', Adresse ='" & request.form("Adresse") & "', Adresse2 ='" & request.form("Adresse2") & "', Postnr ='" & request.form("Postnr") & "', City ='" & request.form("City")& "', Land ='" & request.form("Land")& "', Email ='" & request.form("Email")& "', Level ='" & request.form("rb_value") & "' where Bruger=" & session("Ebruger")" -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------^
-master-d- :> den sidste fejl var til dig
esoulman :> Error Type: Microsoft JET Database Engine (0x80040E14) Syntax error in UPDATE statement. /e-test/Booking/_retbrugerdata.asp, line 8
Hmm.. tjek om det du prøver at update indeholder apostroffer eller andre tegn? Det prob havde jeg engang hvor den fuckede op i et insert-statement.
Level ='" & request.form("rb_value") er en radio button kan det have noget at sige?
Email indeholder @ er det noget hø?
@'et gør ingenting.. men det med radiobutton.. ja, det er et prob. Jeg kan ikke på stående fod lige sige dig hvad du så skal gøre.. men prøv i første omgang af fjerne den fra update statement'et. Og se om det så virker - så har du jo fundet fejlen.
Når jeg fjerner min Level ='" & request.form("rb_value"): får jeg denne fejl: Error Type: ADODB.Field (0x80020009) Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record. /e-test/Booking/editburger.asp
Så vidt jeg kan se magler du ' som esoulman.. Ifølge din SQL-sætning sætter du en streng ind i bruger... Så er Level et reserveret ord i Access så der skal [] omkring i SQL'en: strSQL ="UPDATE tbl_bruger set Bruger = '" & request.form("Email") & "', Navn ='" & request.form("Navn") & "', Adresse ='" & request.form("Adresse") & "', Adresse2 ='" & request.form("Adresse2") & "', Postnr ='" & request.form("Postnr") & "', City ='" & request.form("City")& "', Land ='" & request.form("Land")& "', Email ='" & request.form("Email")& "', [Level] ='" & request.form("Level") & "' where Bruger='" & session("Ebruger") & "'"
eagleeye : nu er det denne fejl: Error Type: ADODB.Field (0x80020009) Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record. /e-test/Booking/editbruger.asp
session("Ebruger") indeholder en email adresse som skal sammenlignes med (Kolonen i DB hedder) Bruger i DB
Prøv at udskrive din SQL: Repsonse.write strSQL conn.execute (strSQL) Og så tjek om WHERE bruger = 'email@adr.dk' passer med det i databasen.
Jeg får ikke lov til at udskrive min: Repsonse.write strSQL men får nu fejl: Error Type: Microsoft JET Database Engine (0x80040E07) Data type mismatch in criteria expression. /e-test/Booking/_retbrugerdata.asp, line 8 =conn.execute (strSQL)
Har du en strSQL sætning før linie 8 ?? du har nemlig en: Conn.Execute(strSQL) som hvis du ikke har en strSQL før linie 8 skal fjernes.
Her er hele min file: <% '_incloginok.asp file if session("login") <> "JA" Then response.redirect "loginform.asp" end if '_dbconn.asp file set conn = server.createobject("adodb.connection") DSN = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & Server.MapPath ("data/booking.mdb") conn.open DSN strSQL ="UPDATE tbl_bruger set Bruger = '" & request.form("Email") & "', Navn ='" & request.form("Navn") & "', Adresse ='" & request.form("Adresse") & "', Adresse2 ='" & request.form("Adresse2") & "', Postnr ='" & request.form("Postnr") & "', City ='" & request.form("City")& "', Land ='" & request.form("Land")& "', Email ='" & request.form("Email")& "', [Level] ='" & request.form("rb_value") & "' where Bruger='" & session("Ebruger") & "'" Response.write strSQL ' strSQL sætning eksekveres Conn.Execute(strSQL) ' Luk databaseforbindelse Conn.Close Set Conn = Nothing response.redirect ("editbruger.asp") %>
[Level] er defineret som tal i access db'en
Ud over et Autonr. felt er resten af felter i db'en defineret som tekst!
ok så skal der ikke ' omkring i SQL'en: strSQL ="UPDATE tbl_bruger set Bruger = '" & request.form("Email") & "', Navn ='" & request.form("Navn") & "', Adresse ='" & request.form("Adresse") & "', Adresse2 ='" & request.form("Adresse2") & "', Postnr ='" & request.form("Postnr") & "', City ='" & request.form("City")& "', Land ='" & request.form("Land")& "', Email ='" & request.form("Email")& "', [Level] = " & request.form("rb_value") & " where Bruger='" & session("Ebruger") & "'"
Damn!!! Stadigvæk ikke Error Type: Microsoft JET Database Engine (0x80040E14) Syntax error in UPDATE statement. /e-test/Booking/_retbrugerdata.asp, line 8
øhh hvordan det ... der er jo ført en execute efter write.. Du kan satdig ikke se en udskrevn sql.?
Nej jeg kan stadig ikke se hvad der skrives ud!
og du har opdateret filen?
ja, jeg er lige igang med at prøve at hardcode nogle update værdier for at se hvad der sker
Underligt: Hardcode værdier - nu virker update i db, men jeg får denne fejl bagefter: Error Type: ADODB.Field (0x80020009) Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record. /e-test/Booking/editbruger.asp
og din fil hedder editbruger.asp ?
gizom> Det er fordi den record du prøver at updatere ikke findes i databasen! //>Rune
Ok jeg dobbelt tjekker lig databasen!
Den er sgu helt gal, jeg kan ikke fatte hvor jeg gør noget galt Jeg har følgende felter i min access db: Id = Autonummerering : strBruger = Tekst : strNavn = Tekst strAdersse = Tekst : strEgn = Tekst : strBy = Tekst strTelefon = Tekst : strMobil = Tekst : strLand = Tekst strEmail = Tekst : strPassword = Tekst : strDato = Dato og klokkeslæt : strLevel = Tal Min kode er således (i Formen): <!--#include file="_incloginok.asp" --> <!--#include file="pickburger.asp" --> <!--#include file="_dbconn.asp" --> <% strSQL = "Select * From tbl_Adresser Where strBruger='" & Request.Querystring("ebruger") & "'" Set rs = Conn.Execute(strSQL) session("Ebruger")= Request.Querystring("ebruger") %> <table width="40%" border="0" cellspacing="2" cellpadding="2" align="center"> <form name="form1" method="post" action="_retbrugerdata.asp"> <tr> <td class='tbl_head' colspan='3'>Online-Booking: Ret bruger data</td> </tr> <tr> <td class='tbl_head_kal' colspan='3' align="left" >Bruger Data for: <%=Session("EBruger")%></td> </tr> <tr> <td class='tbl_log' width='30%'>BrugerId</td> <td width="40%" class='tbl_level2' > <%=Session("EBruger")%></td> <td width="40%" class='tbl_level2' > </td> </tr> <tr> <td class='tbl_log' width='30%'>Navn</td> <td width="40%" class='tbl_level2' > <input class="input" type="text" name="strNavn" value="<%= rs("strNavn")%>"> </td> <td width="40%" class='tbl_level2' > </td> </tr> <tr> <td class='tbl_log' width='30%'>Adresse</td> <td width="40%" class='tbl_level2' > <input class="input" type="text" name="strAdresse" value="<%= rs("strAdresse")%>"> </td> <td width="40%" class='tbl_level2' > </td> </tr> <tr> <td class='tbl_log' width='30%'>Egn</td> <td width="40%" class='tbl_level2' > <input class="input" type="text" name="strEgn" value="<%= rs("strEgn")%>"> </td> <td width="40%" class='tbl_level2' > </td> </tr> <tr> <td class='tbl_log' width='30%'>Postnr.</td> <td width="40%" class='tbl_level2' > <input class="input" type="text" name="strPostnr" value="<%= rs("strPostnr")%>"> </td> <td width="40%" class='tbl_level2' > </td> </tr> <tr> <td class='tbl_log' width='30%'>By</td> <td width="40%" class='tbl_level2' > <input class="input" type="text" name="strBy" value="<%= rs("strBy")%>"> </td> <td width="40%" class='tbl_level2' > </td> </tr> <tr> <td class='tbl_log' width='30%'>Telefon</td> <td width="40%" class='tbl_level2' > <input class="input" type="text" name="strTelefon" value="<%= rs("strTelefon")%>"> </td> <td width="40%" class='tbl_level2' > </td> </tr> <tr> <td class='tbl_log' width='30%'>Mobil</td> <td width="40%" class='tbl_level2' > <input class="input" type="text" name="strMobil" value="<%= rs("strMobil")%>"> </td> <td width="40%" class='tbl_level2' > </td> </tr> <tr> <td class='tbl_log' width='30%'>Land</td> <td width="40%" class='tbl_level2' > <input class="input" type="text" name="strLand" value="<%= rs("strLand")%>"> </td> <td width="40%" class='tbl_level2' > </td> </tr> <tr> <td class='tbl_log' width='30%'>E-mail</td> <td width="40%" class='tbl_level2' > <input class="input" type="text" name="strEmail" value="<%= rs("strEmail")%>"> </td> <td width="40%" class='tbl_level2' > </td> </tr> <tr> <td class='tbl_log' width='30%'>Administrator </td> <td width="40%" class='tbl_level2'> <input type="radio" name="rb_value" value="1"><br> Markeret = Administrator</td> <td width="40%" class='tbl_level2' > </td> </tr> <tr> <td colspan="3" align="center"> <INPUT class="input" TYPE="button" VALUE="Tilbage" BORDER="0" onclick = history.back()> <input class="input" type="submit" name="Submit" value="Ret bruger"> </td> </tr> </form> </table> og i _retbrugerdata.asp: <% '_incloginok.asp file if session("login") <> "JA" Then response.redirect "loginform.asp" end if '_dbconn.asp file set conn = server.createobject("adodb.connection") DSN = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & Server.MapPath ("data/booking.mdb") conn.open DSN strSQL ="UPDATE tbl_Adresse set strBruger = '" & request.form("strEmail") & "', strNavn ='" & request.form("strNavn") & "', strAdresse ='" & request.form("strAdresse") & "', strEgn ='" & request.form("strEgn") & "', strPostnr ='" & request.form("strPostnr") & "', strBy ='" & request.form("strBy")& "', strTelefon ='" & request.form("strTelefon")& "', strMobil ='" & request.form("strMobil")& "', strLand ='" & request.form("strLand")& "', strEmail ='" & request.form("strEmail")& "', strLevel = " & request.form("rb_value") & " where strBruger='" & session("Ebruger") & "'" Response.write strSQL ' strSQL sætning eksekveres Conn.Execute(strSQL) ' Luk databaseforbindelse Conn.Close Set Conn = Nothing response.redirect ("editbruger.asp") %> Det er måske for meget at spørge om, men jeg kan simpelthen ikke se hvor fejlen er!!!
Jamen se nu lige hvad jeg skriver, for i det denne fejl kommer: Error Type: ADODB.Field (0x80020009) Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record. Så er det fordi at der ikke findes et felt som matcher til din efterspørgelse! Prøv lige at tjek efter om der er et feltet strBruger er = session("Ebruger") - altså det somk session("Ebruger") indeholder skal oxo kunne findes i databasen! //>Rune
Jeg må have skrevet forkert: Fejlen er: Error Type: Microsoft JET Database Engine (0x80040E14) Syntax error in UPDATE statement. /e-test/Booking/_retbrugerdata.asp, line 15 line 15 : Conn.Execute(strSQL)
feltet strBruger i db er = session("Ebruger")
lav dem her om til: strPostnr = Tal strTelefon = Tal strMobil = Tal og så brug dette: <% '_incloginok.asp file if session("login") <> "JA" Then response.redirect "loginform.asp" end if '_dbconn.asp file Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("data/booking.mdb") strSQL ="UPDATE tbl_Adresse SET strBruger = '" & request.form("strEmail") & "', strNavn ='" & request.form("strNavn") & "', strAdresse ='" & request.form("strAdresse") & "', strEgn ='" & request.form("strEgn") & "', strPostnr =" & request.form("strPostnr") & ", strBy ='" & request.form("strBy")& "', strTelefon =" & request.form("strTelefon")& ", strMobil =" & request.form("strMobil")& ", strLand ='" & request.form("strLand")& "', strEmail ='" & request.form("strEmail")& "', strLevel = " & request.form("rb_value") & " where strBruger='" & session("Ebruger") & "'" Response.write strSQL ' strSQL sætning eksekveres Conn.Execute(strSQL) ' Luk databaseforbindelse Conn.Close Set Conn = Nothing response.redirect ("editbruger.asp") %> Så skulle det gerne virke! //>Rune
Der er forsat en fejl!! Udskrift af min strSQL ser således ud: UPDATE tbl_Adresse SET strBruger = 'willi@gizom.com', strNavn ='Willi Olrik', strAdresse ='Østergade ', strEgn ='', strPostnr =3670, strBy ='Stenløse', strTelefon =38181645, strMobil =26162522, strLand ='Norge', strEmail ='willi@gizom.com', strLevel = where strBruger='willi@gizom.com' Der hvor jeg kan se noget mærkeligt er ved strLevel sidst i strSQL: strLevel = where strBruger='willi@gizom.com' Den skal være lig 1 eller 0 da det er value fra en radio button.......
Jeg fandt ud af rette strLevel fejlen: rbval = request.form("rb_value") strSQL ="UPDATE tbl_Adresser SET strBruger = '" & request.form("strEmail") & "', strNavn ='" & request.form("strNavn") & "', strAdresse ='" & request.form("strAdresse") & "', strEgn ='" & request.form("strEgn") & "', strPostnr =" & request.form("strPostnr") & ", strBy ='" & request.form("strBy")& "', strTelefon =" & request.form("strTelefon")& ", strMobil =" & request.form("strMobil")& ", strLand ='" & request.form("strLand")& "', strEmail ='" & request.form("strEmail")& "', strLevel = " & cint(rbval) & " where strBruger='" & session("Ebruger") & "'" så nu får jeg denne: Error Type: ADODB.Field (0x80020009) Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record. /e-test/Booking/editbruger.asp så jeg er igang med at tjekke om alle felter er stavet på sammen måde!!
<% '_incloginok.asp file if session("login") <> "JA" Then response.redirect "loginform.asp" end if '_dbconn.asp file Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("data/booking.mdb") If request.form("rb_value") = 1 Then valider = 1 End If If request.form("rb_value") = "" Then valider = 0 End If strSQL ="UPDATE tbl_Adresse SET strBruger = '" & request.form("strEmail") & "', strNavn ='" & request.form("strNavn") & "', strAdresse ='" & request.form("strAdresse") & "', strEgn ='" & request.form("strEgn") & "', strPostnr =" & request.form("strPostnr") & ", strBy ='" & request.form("strBy")& "', strTelefon =" & request.form("strTelefon")& ", strMobil =" & request.form("strMobil")& ", strLand ='" & request.form("strLand")& "', strEmail ='" & request.form("strEmail")& "', strLevel = " & valider & " WHERE strBruger='" & session("Ebruger") & "'" Response.write strSQL ' strSQL sætning eksekveres Conn.Execute(strSQL) ' Luk databaseforbindelse Conn.Close Set Conn = Nothing response.redirect ("editbruger.asp") %> prøv med dette! //>Rune
jeg er nød til at løbe! Desværre ser på sagen senere.
sorry.. det er sådan her den skal være: <% '_incloginok.asp file if session("login") <> "JA" Then response.redirect "loginform.asp" end if '_dbconn.asp file Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("data/booking.mdb") If request.form("rb_value") = "on" Then valider = 1 End If If request.form("rb_value") = "" Then valider = 0 End If strSQL ="UPDATE tbl_Adresse SET strBruger = '" & request.form("strEmail") & "', strNavn ='" & request.form("strNavn") & "', strAdresse ='" & request.form("strAdresse") & "', strEgn ='" & request.form("strEgn") & "', strPostnr =" & request.form("strPostnr") & ", strBy ='" & request.form("strBy")& "', strTelefon =" & request.form("strTelefon")& ", strMobil =" & request.form("strMobil")& ", strLand ='" & request.form("strLand")& "', strEmail ='" & request.form("strEmail")& "', strLevel = " & valider & " WHERE strBruger='" & session("Ebruger") & "'" Response.write strSQL ' strSQL sætning eksekveres Conn.Execute(strSQL) ' Luk databaseforbindelse Conn.Close Set Conn = Nothing response.redirect ("editbruger.asp") %> -nu har jeg oxo selv afprøvet scriptet, og det virker her.. så det skulle oxo gerne virke ved dig..! held og lykke med det... //>Rune
Selv tak, for hjælpen. Fejlen lå bl.a. hos min host som af en eller anden grund havde fjernet min skrive rettigheder på mine database mapper. Tak....
Kurser inden for grundlæggende programmering