21. januar 2006 - 10:16
Der er
54 kommentarer og 1 løsning
Update metode
Hvor er problemet.... : <% Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/database.mdb") Conn.Open DSN ' SQL sletter record strSQL = "Update * from gruppe_menu Where id='" & Request.Querystring("ID") & "'" Set rs = Conn.Execute(strSQL) id = ""& rs("id") & "" sprog = ""& rs("sprog") & "" Html = ""& rs("Html") & "" Navn = ""& rs("Navn") & "" side = ""& rs("side") & "" %> <h1>Punktet er slettet<br> <br> </h1> <% Conn.Close Set Conn = Nothing %>
Annonceindlæg fra SuperOffice
21. januar 2006 - 10:26
#1
SQL for at slette: strSQL = "DELETE FROM gruppe_menu WHERE id='" & Request.Querystring("ID") & "'"
21. januar 2006 - 10:27
#2
Og det giver ikke menig at have dette efter at man har slettet posten: Set rs = Conn.Execute(strSQL) id = ""& rs("id") & "" sprog = ""& rs("sprog") & "" Html = ""& rs("Html") & "" Navn = ""& rs("Navn") & "" side = ""& rs("side") & ""
21. januar 2006 - 10:27
#3
Det med at slette mener jeg ikke den skal jo opdatere... glem teksten... :-)
21. januar 2006 - 10:27
#4
Problemet er at det er forkert. Hvilket eksempel har du skrevet af efter??
Her er et rimeligt fornuftigt eksempel:
http://www.html.dk/tutorials/asp/lektion22.asp Man skal jo ikke selv gætte, hvad tingene betyder, så det "at skrive af efter andre" er den nemmeste måde at komme i gang på.
21. januar 2006 - 10:31
#5
Hvis du skal update, mangler du at skrive hvad: strSQL = "UPDATE gruppe_menu SET Navn='Nyt Navn' WHERE id='" & Request.Querystring("ID") & "'"
21. januar 2006 - 10:35
#6
Altså den skal jo opdatere disse flg punkter: id = ""& rs("id") & "" sprog = ""& rs("sprog") & "" Html = ""& rs("Html") & "" Navn = ""& rs("Navn") & "" side = ""& rs("side") & "" skal de så tilføjes i den sætning
21. januar 2006 - 10:38
#7
Så skal din kode nok mere se nogenlunde sådan her ud: <% Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/database.mdb") Conn.Open DSN ' SQL sletter record strSQL = "SELECT * FROM gruppe_menu WHERE id='" & Request.Querystring("ID") & "'" Set rs = Conn.Execute(strSQL) rs("sprog") = sprog rs("Html") = Html rs("Navn") = Navn rs("side") = side rs.Update Conn.Close Set Conn = Nothing %>
21. januar 2006 - 10:38
#8
Oki
21. januar 2006 - 10:40
#9
nielle får flg fejl ved den: [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
21. januar 2006 - 10:41
#10
Har fjernet apostrofferne det hjalp men gav så denne fejl: Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype.
21. januar 2006 - 10:47
#11
Kan det være man skal tilføje noget i stil med : Recordsetname.Locktype=3 som fjerner den limitation?
21. januar 2006 - 10:56
#12
Personligt bruger jeg aldrig den måde at update på - det fråser med resourcerne. Så derfor er jeg også lidt udsikker på hvad løsningen er - altså ud over at det er din Open den er gal med; Det recordset du åbner, tillader nemlig ikke at man kan kalde Update. Prøv dette her i stedet for: Conn.Open DSN, adOpenKeyset, adLockPessimistic, adCmdTableDirect
21. januar 2006 - 10:59
#13
Okay det vil jeg gøre, men vil lige høre denne her: currentLock = recordset.LockType recordset.LockType = newtype Det er microsofts bud på det og så med value = 3 er det ikke et godt valg eller?
21. januar 2006 - 11:01
#14
Værdien 3 er lig adLockOptimistic - og den er da ok til formålet.
21. januar 2006 - 11:03
#15
nielle --> ved brug af den får man igen: Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype.
21. januar 2006 - 11:03
#16
Som den så ser ud nu er: <% Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/database.mdb") Conn.Open DSN, adOpenKeyset, adLockPessimistic, adCmdTableDirect ' SQL opdater record strSQL = "SELECT * FROM gruppe_menu WHERE id=" & Request.Querystring("ID") Set rs = Conn.Execute(strSQL) rs("sprog") = sprog rs("Html") = Html rs("Navn") = Navn rs("side") = side rs.Update Conn.Close Set Conn = Nothing %>
21. januar 2006 - 11:04
#17
Det kan være at der skal være en MoveFirst før at du updater: rs.MoveFirst rs("sprog") = sprog - og så kan du jo prøve med adLockOptimistic i stedet for min adLockPessimistic.
21. januar 2006 - 11:06
#18
Får stadig den fejl: Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype.
21. januar 2006 - 11:13
#19
<% Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/database.mdb") Conn.Open DSN Set rs = Server.CreateObject("ADODB.Recordset") rs.Open Conn, adOpenKeyset, adLockOptimistic, adCmdTable ' SQL opdater record strSQL = "SELECT * FROM gruppe_menu WHERE id=" & Request.Querystring("ID") Set rs = Conn.Execute(strSQL) rs.MoveFirst rs("sprog") = sprog rs("Html") = Html rs("Navn") = Navn rs("side") = side rs.Update rs.Close Set rs = Nothing Conn.Close Set Conn = Nothing %>
21. januar 2006 - 11:21
#20
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another. <-- Det er den fejl det giver! Conn.Close Set Conn = Nothing Med den til sidst lukker man ikke så to gange altså gentagelse?? og Conn.Open øverst??
21. januar 2006 - 11:22
#21
Den 1. Conn.Open skulle ikke have været der. :^|
21. januar 2006 - 11:23
#22
:-) er fjernet har dog ikke hjulpet!
21. januar 2006 - 11:24
#23
Får du et linjenummer på fejlmeddelelsen?
21. januar 2006 - 11:25
#24
/projekt/side_opbygning/admin/rediger.asp, line 16 og det er : rs.Open Conn, adOpenKeyset, adLockOptimistic, adCmdTable
21. januar 2006 - 11:27
#25
Prøv med: rs.Open "gruppe_menu", Conn, adOpenKeyset, adLockOptimistic, adCmdTable
21. januar 2006 - 11:38
#26
Siger stadig det samme ved samme linie er det fordi at så skal : strSQL = "SELECT * FROM gruppe_menu WHERE id=" & Request.Querystring("ID") fjernes
21. januar 2006 - 11:41
#27
Lyder ikke sandsynligt. Hvis linjenummeret er 16 så er det i linje 16 eller tidligere at fejlen skal findes.
21. januar 2006 - 11:43
#28
ADODB.Recordset error '800a0bb9' Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another. eksempel.asp, line 16 og line 16 = rs.Open "gruppe_menu", Conn, adOpenKeyset, adLockOptimistic, adCmdTable
21. januar 2006 - 11:53
#29
Hmm, jeg kan ikke se nogen fejl. Det er endnu en grund til at jeg ikke bryder mig om denne måde at opdatere på - fopruden at den sløser med resourcerne - så kræver den en hel masse bogholderi ved siden af. Prøv at sammenligne med dette: <% Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/database.mdb") Conn.Open DSN strSQL = "UPDATE gruppe_menu SET sprog='" & sprog & "', html='" & html & "', navn='" & navn & "', side='" & side & "' WHERE id=" & Request.Querystring("ID") Set rs = Conn.Execute(strSQL) Conn.Close Set Conn = Nothing %>
21. januar 2006 - 11:59
#30
Den her giver ingen fejl men når man har indtastet det man vil rette og den g¨år igennem denne fil forsvinder siden istedet for at blive opdateret...
21. januar 2006 - 12:03
#31
Klart - hvis der ikke er mere kode end dette. Men det var der jo heller ikke i det kodeeksempel du startede med.
21. januar 2006 - 12:05
#32
Øhm... yes Men altså den du har oplyst her til sidst burde da stadig opdatere felterne??
21. januar 2006 - 12:08
#33
Det gør den skam også (du kan jo selv kigge efter i databasen) - men når der ikke er noget kode som viser data fra databasen, så kommer der jo heller ikke noget på skærmen. :^)
21. januar 2006 - 12:13
#34
NEj men når jeg så ser på siden der viser så har den ikke opdateret noget, den sletter istedet for at opdatere :-)
21. januar 2006 - 12:15
#35
Der er intet i den kode som kan slette noget som helst. Men prøv lige denne varsion: <% Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/database.mdb") Conn.Open DSN strSQL = "UPDATE gruppe_menu SET sprog='" & sprog & "', html='" & html & "', navn='" & navn & "', side='" & side & "' WHERE id=" & Request.Querystring("ID") Response.Write "DEBUG: " & strSQL & "<br>" Set rs = Conn.Execute(strSQL) Conn.Close Set Conn = Nothing %> - og post så resultatet her.
21. januar 2006 - 12:17
#36
Den viser : DEBUG: UPDATE gruppe_menu SET sprog='', html='', navn='', side='' WHERE id=1
21. januar 2006 - 12:19
#37
Du skal jo have en fornuftig værdi ind i dine 5 variable html, navn, side og id. Ellers giver det ikke rigtig mening.
21. januar 2006 - 12:21
#38
Hvad mener du med det?
21. januar 2006 - 12:22
#39
Siden som man rediger fra ser således ud kan den have noget med det at gøre?: <% Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/database.mdb") Conn.Open DSN ' SQL sletter record strSQL = "SELECT * FROM gruppe_menu where id = " & Request.Querystring("ID") Set rs = Conn.Execute(strSQL) id = "" & rs("id") & "" Navn ="" & rs("Navn") & "" Html = "" & rs("Html") & "" side = "" & rs("side") & "" sprog = "" & rs("sprog") & "" rs.close set rs = Nothing %> <html> <head> <meta http-equiv="Content-Language" content="da"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Navn</title> <link rel="stylesheet" type="text/css" href="../style.css"> </head> <body> <form action=rediger.asp?ID=<%=id%> METHOD=POST id=form name=form> <p>Navn ID Navn<br> <input type="text" name="Navn" size="20" value='<%=Navn%>'> <input type="text" name="side" size="20" value='<%=side%>'><br> <br> Sprog <br> <input type="text" name="sprog" size="20" value='<%=sprog%>'> <br> <br> Indhold<br> <textarea rows="24" name="Html" cols="67">'<%=Html%>'</textarea><br> <br> <input type="submit" value="Send" name="Submit"> <input type="reset" value="Nulstil" name="B2"></p> </form> </body> </html>
21. januar 2006 - 12:23
#40
Fejlen du melder i 21/01-2006 11:43:21 opstår nok pga. konstanterne (vbOpenKeyset, adLockOptimistic osv.) ikke er defineret nogen steder. Så en enten skal du definere de forskellige konstanter, lave en meta-refererence til ADO-dll'en eller benytte de numeriske værdier som disse konstanter repræsenterer. Konstanternes numeriske værdier (i dit tilfælde): lock optimistic = 3 keyset = 1 command table = 2
21. januar 2006 - 12:24
#41
De 5 variable, sprog, html, navn, side og id, angiver jo hvad der skal opdateres til. Lige nu indeholder de tomme værdier (pånær id som har værdien 1) og derfor bliver felterne i din række opdateret til de tomme værdier.
21. januar 2006 - 12:26
#42
Aha... men altså fra siden man rediger fra skal man så sende alle de gængse værdier afsted, men hvordan det??
21. januar 2006 - 12:28
#43
Med 21/01-2006 12:22:57 som den "afsendende side" skal opdaterings-koden se sådan her ud: <% Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/database.mdb") Conn.Open DSN id = Replace(Request.QueryString("id"), "'", "''") sprog = Replace(Request.Form("sprog"), "'", "''") html = Replace(Request.Form("html"), "'", "''") navn = Replace(Request.Form("navn"), "'", "''") side = Replace(Request.Form("navn"), "'", "''") strSQL = "UPDATE gruppe_menu SET sprog='" & sprog & "', html='" & html & "', navn='" & navn & "', side='" & side & "' WHERE id=" & Request.Querystring("ID") Response.Write "DEBUG: " & strSQL & "<br>" Set rs = Conn.Execute(strSQL) Conn.Close Set Conn = Nothing %>
21. januar 2006 - 12:43
#44
Rettelse: side = Replace(Request.Form("side"), "'", "''")
21. januar 2006 - 14:55
#45
Jamen hvordan skal de sider så sed ud for den sidste som skal erstatte koden i rediger siden og hvis en anden sende side så den?
21. januar 2006 - 14:58
#46
Prøv lige at formulere det spørgsmål en gang til...
21. januar 2006 - 16:35
#47
Den side hvor formularen er hvor jeg rediger siden. Hvordan skal det se ud der og på modtager siden, altså den side der reelt opdatere indholdet.
21. januar 2006 - 16:52
#48
Den hvor du redigere er jo det du kar postet i 21/01-2006 12:22:57- Den som opdatere indholdet skal se ud som i 21/01-2006 12:28:26.
21. januar 2006 - 17:05
#49
resultatet af opdateringen bliver = DEBUG: Update gruppe_menu set Navn= 'Navn', Html= 'Html', side= 'side', sprog= 'sprog' Where id = 6 den skal jo hente resultaterne i html, sprog osv.. og det kan jeg se den ikke gør?
21. januar 2006 - 17:09
#50
Hvad skrev du i felterne der?
21. januar 2006 - 17:17
#51
Siden hvor man indtaster de nye værdier ser således ud: <% Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/database.mdb") Conn.Open DSN ' SQL sletter record strSQL = "SELECT * FROM gruppe_menu where id = " & Request.Querystring("ID") Set rs = Conn.Execute(strSQL) id = "" & rs("id") & " Navn ="" & rs("Navn") & "" Html = "" & rs("Html") & "" side = "" & rs("side") & "" sprog = "" & rs("sprog") & "" rs.close set rs = Nothing %> <html> <head> <meta http-equiv="Content-Language" content="da"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Navn</title> <link rel="stylesheet" type="text/css" href="../style.css"> </head> <body> <form action=rediger.asp?ID=<%=id%> METHOD=POST id=form name=form> <p>Navn ID Navn<br> <input type="text" name="Navn" size="20" value='<%=Navn%>'> <input type="text" name="side" size="20" value='<%=side%>'><br> <br> Sprog <br> <input type="text" name="sprog" size="20" value='<%=sprog%>'> <br> <br> Indhold<br> <textarea rows="24" name="Html" cols="67"><%=Html%></textarea><br> <br> <input type="submit" value="Send" name="Submit"> <input type="reset" value="Nulstil" name="B2"></p> </form> </body> </html> Siden hvor det hele redigeres ser således ud: <% Set conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/database.mdb") Conn.Open DSN strSQL = "Update gruppe_menu set " strSQL = strSQL &"Navn=" "" & ("Navn") & "", " strSQL = strSQL & "Html=" "" & ("Html") & "", " strSQL = strSQL & "side=""" & ("side") & "", " strSQL = strSQL & "sprog=""" & ("sprog") & "" " strSQL = " Where id = " & Request.Querystring("ID") Response.Write "DEBUG: " & strSQL & "<br>" Conn.Close Set Conn = Nothing %>
21. januar 2006 - 17:20
#52
Siden hvor det hele redigeres er rettet til at det ser således ud: <% Set conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/database.mdb") Conn.Open DSN strSQL = "Update gruppe_menu set " strSQL = strSQL & "Navn=" '" & ("Navn") & "', " strSQL = strSQL & "Html=" '" & ("Html") & "', " strSQL = strSQL & "side= '" & ("side") & "', " strSQL = strSQL & "sprog= '" & ("sprog") & "' " strSQL = " Where id = " & Request.Querystring("ID") Response.Write "DEBUG: " & strSQL & "<br>" Set rs = Conn.Execute(strSQL) Conn.Close Set Conn = Nothing %>
21. januar 2006 - 17:27
#53
JES DET VIRKER... Mange tak nielle smider du ikke et svar!!!!
21. januar 2006 - 17:28
#54
===== sideNr1.asp ===== <% Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/database.mdb") Conn.Open DSN id = Request.Querystring("ID") strSQL = "SELECT * FROM gruppe_menu WHERE id = " & id Set rs = Conn.Execute(strSQL) Navn = rs("Navn") Html = rs("Html") side = rs("side") sprog = rs("sprog") rs.Close Set rs = Nothing %> <html> <head> <meta http-equiv="Content-Language" content="da"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Navn</title> <link rel="stylesheet" type="text/css" href="../style.css"> </head> <body> <form action="rediger.asp?id=<% =id %>" method="post" id="form" name="form"> <p>Navn ID Navn<br> <input type="text" name="navn" size="20" value='<% =Navn %>'> <input type="text" name="side" size="20" value='<% =side %>'><br> <br> Sprog<br> <input type="text" name="sprog" size="20" value='<% =sprog %>'> <br> <br> Indhold<br> <textarea rows="24" name="Html" cols="67"><% =Html %></textarea><br> <br> <input type="submit" value="Send" name="Submit"> <input type="reset" value="Nulstil" name="B2"></p> </form> </body> </html> ===== rediger.asp ===== <% Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/database.mdb") Conn.Open DSN id = Replace(Request.QueryString("id"), "'", "''") sprog = Replace(Request.Form("sprog"), "'", "''") html = Replace(Request.Form("html"), "'", "''") navn = Replace(Request.Form("navn"), "'", "''") side = Replace(Request.Form("navn"), "'", "''") strSQL = "UPDATE gruppe_menu SET sprog='" & sprog & "', html='" & html & "', navn='" & navn & "', side='" & side & "' WHERE id=" & Request.Querystring("ID") Response.Write "DEBUG: " & strSQL & "<br>" Set rs = Conn.Execute(strSQL) Conn.Close Set Conn = Nothing Response.Redirect "Navnet på den side som du skal tilbage til bagefter" %>
21. januar 2006 - 17:29
#55
Oki :^)
Kurser inden for grundlæggende programmering