NovaMedlem sedan feb. 2005216 inlägg Hur får man en update att fungera om man är en klåpare som jag på asp. jag har klippt och klistrat i hop detta men jag får det inte att fungera.
<%
Set Recset = Server.CreateObject("ADODB.Recordset")
Connection = MM_jaktdagbok_STRING
Uppdatera = "SELECT * FROM anvandare WHERE ID = " & Request.Form("anv_nr") & " "
RecSet.Open Uppdatera, Connection, adOpenStatic, adLockOptimistic
RecSet("anv_namn") = Request.Form("namn")
RecSet("anv_enamn") = Request.Form("e_namn")
RecSet("anv_fodd") = Request.Form("fodd")
RecSet("anv_ort") = Request.Form("ort")
RecSet("anvmail_osyn") = Request.Form("mailadress")
RecSet("anv_alias") = Request.Form("alias")
RecSet("anv_losen") = Request.Form("losen")
RecSet("anv_beskrivning") = Request.Form("beskrivning")
RecSet.Update
RecSet.Close
Conn.Close
Response.Redirect "testinloggad.asp"
%>
Detta felmedelande får jag nu
Error Type:
ADODB.Recordset (0x800A0BB9)
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
/jaktdagbok/wwwroot/testupp_datera.asp, line 9
Och detta är rad 9
RecSet.Open Uppdatera, Connect, adOpenStatic, adLockOptimistic
Peter SMedlem sedan dec. 20025 483 inlägg Använd UPDATE istället:
str = "update anvandare set" & _
" anv_namn = " & request.form("namn") & "," & _
" anv_enamn = " & request.form("e_namn") & "," & _
" anv_fodd = " & request.form("fodd") & "," & _
" anv_ort = " & request.form("ort") & "," & _
" anvmail_osyn = " & request.form("mailadress") & "," & _
" anv_alias = " & request.form("alias") & "," & _
" anv_losen = " & request.form("losen") & "," & _
" anv_beskrivning = " & request.form("beskrivning") & _
" where id = " clng(request.form("anv_nr"))
set conn = server.createobject("adodb.connection")
conn.open MM_jaktdagbok_STRING
conn.execute str, ,128
conn.close
set conn = nothing
Sedan kan det givetvis vara bra att skydda sig mot SQL-injections. Sök i detta forum och du skall finna!
@ndersMedlem sedan juni 200032 969 inlägg Jag håller med Peter S om att det är bättre att använda en UPDATE-fråga istället. Men, man måste då se till att ha apostrofer runt textvärden också. Jag gissar lite vad det är för datatyper på fälten, men något sånt här kan det se ut:
str = "update anvandare set" & _
" anv_namn = '" & request.form("namn") & "'," & _
" anv_enamn = '" & request.form("e_namn") & "'," & _
" anv_fodd = " & request.form("fodd") & "," & _
" anv_ort = '" & request.form("ort") & "'," & _
" anvmail_osyn = '" & request.form("mailadress") & "'," & _
" anv_alias = '" & request.form("alias") & "'," & _
" anv_losen = '" & request.form("losen") & "'," & _
" anv_beskrivning = '" & request.form("beskrivning") & "'" & _
" where id = " clng(request.form("anv_nr"))
Om fältet fodd är av datumtyp skall det vara brädgårdar runt värdet.
- - - - - -
Anledningen till att du fick ett felmeddelande på din första kod är sannolikt att de konstanter du använder (adOpenStatic, adLockOptimistic) inte är definierade på sidan. Ett sätt att göra detta är att inkludera filen adovbs.inc på sidan:
<!-- #include virtual="adovbs.inc" -->
Mvh
NovaMedlem sedan feb. 2005216 inlägg Det protesterade först mot
" where id = " clng(request.form("anv_nr"))
så jag böt det mot
" WHERE ID = " & Request.Form("anv_nr") & " "
nu får jag ett annat felmedelande nu
str = "update anvandare set" & _
" anv_namn = '" & request.form("namn") & "'," & _
" anv_enamn = '" & request.form("e_namn") & "'," & _
" anv_fodd = " & request.form("fodd") & "," & _
" anv_ort = '" & request.form("ort") & "'," & _
" anvmail_osyn = '" & request.form("mailadress") & "'," & _
" anv_alias = '" & request.form("alias") & "'," & _
" anv_losen = '" & request.form("losen") & "'," & _
" anv_beskrivning = '" & request.form("beskrivning") & "'" & _
" WHERE ID = " & Request.Form("anv_nr") & " "
set conn = Server.CreateObject("ADODB.Connection")
conn.Open MM_jaktdagbok_STRING
conn.execute str, 128
conn.close
set conn = nothing%>
detta felmedelande blir det
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
/jaktdagbok/wwwroot/sida_som_uppdaterar.asp, line 19
Browser Type:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Q312461; .NET CLR 1.1.4322; .NET CLR 1.0.3705)
Page:
POST 152 bytes to /jaktdagbok/wwwroot/sida_som_uppdaterar.asp
POST Data:
anv_nr=2&namn=Jonas&e_namn=N%E4slund&fodd=1971&ort=Lule%E5&mailadress=jonas@jaktdagbok.se&alias=Jonte&losen=jonas&beskrivning=jag+%E4r+lat&Submit=Submit
Rad nr 19
conn.Open MM_jaktdagbok_STRING
@ndersMedlem sedan juni 200032 969 inlägg Har du gett MM_jaktdagbok_STRING något värde?
NovaMedlem sedan feb. 2005216 inlägg Ops jag hade inte med #include file="../Connections/jaktdagbok.asp
Men nu protesterar det mot
Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntax error in UPDATE statement.
/jaktdagbok/wwwroot/sida_som_uppdaterar.asp, line 21
Rad 21 är
conn.execute str, 128
@ndersMedlem sedan juni 200032 969 inlägg Skriv ut variabeln str med Response.write, så får vi se hur den färdiga SQL-frågan ser ut.
Mvh
NovaMedlem sedan feb. 2005216 inlägg update anvandare set anv_namn = 'Jonas', anv_enamn = 'Näslund', anv_fodd = 1971, anv_ort = 'Luleå',
anvmail_osyn = 'jonas@jaktdagbok.se', anv_alias = 'Jonte',
anv_losen = 'jonas', anv_beskrivning = 'jag är lat' WHERE ID = 2
Jag har radbrutit koden lite.
@ndersMedlem sedan juni 200032 969 inlägg Jag ser inte direkt något fel i just UPDATE-frågan, men däremot är execute-raden något felaktig, du saknar ett kommatecken.
conn.execute str,[b] ,[/b] 128
mvh
NovaMedlem sedan feb. 2005216 inlägg När jag försöker öppna sidan som uppdaterar Med
conn.execute str, , 128
Blir felmedelandet
Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntax error in UPDATE statement.
/jaktdagbok/wwwroot/sida_som_uppdaterar.asp, line 21
När jag skickar värden från en annan sida, till sidan som uppdaterar så får jag detta
Error Type:
Microsoft JET Database Engine (0x80040E10)
No value given for one or more required parameters.
/jaktdagbok/wwwroot/sida_som_uppdaterar.asp, line 21
Ja Erik jag tror mig veta att det behöver ordnas. Men eftersom jag är en "klåpare" på Asp så försöker jag lösa en sak åt gången :)
Jesper TMedlem sedan nov. 20017 144 inlägg Det är för att du antagligen försöker lägga in ett nullvärde eller liknande.
I sådana här fall är det alltid bra att skriva ut sql-satsen för att se vad som spökar.
str = "bla bla bla"
With Response
.Write str
.end
End With
conn.execute str, , 128
NovaMedlem sedan feb. 2005216 inlägg update anvandare set anv_namn = '', anv_enamn = '', anv_fodd = , anv_ort = '',
anvmail_osyn = '', anv_alias = '', anv_losen = '', anv_beskrivning = '' WHERE ID =
Detta blir det med Jesper.T, det säger inte mig något men kanske någon annan. Jag har radbrutit koden.
NovaMedlem sedan feb. 2005216 inlägg Hittade felet det var som jag trodde att jag är en nybörjare,
" WHERE ID = " & Request.Form("anv_nr") & " "
ska ju självklart eller? vara
" WHERE anv_nr = " & Request.Form("anv_nr") & " "
Jesper TMedlem sedan nov. 20017 144 inlägg Du kan ta bort : & " "
i slutet, onödigt att lägga in luft... ;)