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 tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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