Om du ska lägga till data kan du nog inte öppna ditt recordset med en statisk cursor. Försök med adOpenDynamic istället för adOpenStatic, eller ännu hellre, skriv en INSERT-fråga för att lägga till data.
Mvh,
------------------
Don't panic!
11 svar · 214 visningar · startad av Hulth
Varför får jag detta felmedelandet av pws?
Jag har win98 och Access 97
ADODB.Recordset fel '800a0cb3'
Åtgärden som programmet begärt stöds inte av leverantören.
/icq/add.asp, rad 15
<!--#include file="adovbs.inc"-->
<%
' Sökvägen till din databas
db_ad = Server.MapPath("lista.mdb")
If Request.Querystring("vad") = "save" Then
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & db_ad
Set RecSet = Server.CreateObject("ADODB.RecordSet")
hamta = "SELECT * FROM lista"
RecSet.Open hamta, Connect, adOpenStatic
RecSet.AddNew ' <-- rad 15
RecSet("namn") = Request.Form("namn")
RecSet("email") = Request.Form("email")
RecSet("icq") = Request.Form("icq")
Recset("add") = Request.Form("add")
RecSet("ip") = Request.ServerVariables("REMOTE_ADDR")
RecSet.Update
RecSet.Close
Set RecSet = Nothing
Connect.Close
Set Connect = Nothing
Response.Redirect "visa.asp"
End If
If Request.Querystring("vad") = "" Then
Set db = Server.CreateObject("ADODB.Connection")
db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ="& db_ad
SQL = "SELECT Count(*) From lista"
Set rs = db.Execute(SQL)
antal = RS.Fields(0)
%>
<html>
<head>
<title>ICQ-lista ver 1.0 av David Hulth</title>
</head>
<body>
<table align="center" width="700" border="0" cellpadding="0" cellspacing="0">
<tr><td><font face="Verdana" size="4" color="#FF0000">ICQ-listan ver 1.0 av David Hulth</font></td></tr>
<tr><td><font face="Verdana" size="2" color="#003399"><b>Gör som <%=antal%> andra och gå med i ICQ-listan du också</b></font></td></tr>
<tr><td> </td></tr>
<tr><td>
<table align="center" width="100%" border="0" cellpadding="0" cellspacing="0">
<form action="add.asp?vad=save" method="post">
<tr><td><div align="right"><font face="Verdana" size="1"><b>Ditt namn</b></font></div></td><td> </td><td><input type="text" name="namn"></td></tr>
<tr><td><div align="right"><font face="Verdana" size="1"><b>Din Email</b></font></div></td><td> </td><td><input type="text" name="email"></td></tr>
<tr><td><div align="right"><font face="Verdana" size="1"><b>Ditt ICQ-nummer</b></font></div></td><td> </td><td><input type="text" name="icq"></td></tr>
<tr><td><div align="right"><font face="Verdana" size="1"><b>Auth</b></font></div></td><td> </td><td><select name="auth"><option value="Alltid" selected>Alltid</option><option value="Tillstånd krävs">Tillstånd krävs</option></select></td></tr>
<tr><td><div align="right"><input type="reset" name="Nollställ"></div></td><td> </td><td><input type="submit" value="Skicka"></td></tr>
</form>
</table>
</td></tr>
</table>
</body>
</html>
<% End If %>
------------------
//Hulth
Om du ska lägga till data kan du nog inte öppna ditt recordset med en statisk cursor. Försök med adOpenDynamic istället för adOpenStatic, eller ännu hellre, skriv en INSERT-fråga för att lägga till data.
Mvh,
------------------
Don't panic!
Hur skriver jag en insert? vad ska jag ersätta då?
är lite rookie på databaser.. kör alltid med recordset
------------------
//Hulth
Jag hjälper dig en liten bit på väg, med syntaxen. :)
strSQL = "INSERT INTO tblTable (fldField1, fldField2, fldField3) VALUES ('" & strValue1 & "', " & intValue1 & ", #" & dteValue1 & "#)"
Det blir lite krångligare, men det blir färre kodrader, bättre prestanda, och du blir en bättre man. Eller kvinna. :)
Mvh,
------------------
Don't panic!
Du tror inte du kunde skriva fullständig kod inklusive koppling till databas?
alla variabler osv finns i första inlägget i denna tråden..
------------------
//Hulth
Det är några besvärligheter med insert. Det första är att man måste anpassa sig till vilka datatyper som kolumnerna har, nu förutsätter jag att alla kolumner är av typen text och dessa värden skall anges inom ' i insert-statementet. Om det är numeriska värden så anger man inget alls. Anledningen till att jag gör replace är att det annars skulle bli fel om värdet i sig innehåller en '
Ett annat problem är reserverade ord. Nu har du använt ADD som kolumnnamn och då det är ett reserverat ord i SQL så måste man ange det inom []. Det är kanske bäst att byta namn om du skall börja använda sql direkt.
If Request.Querystring("vad") = "save" Then
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & db_ad
sql = "insert into lista(namn,email,icq,[ADD],ip) values ('" & _
replace(request.form("namn"),"'","''") & "','" & _
replace(request.form("email"),"'","''") & "','" & _
replace(request.form("icq"),"'","''") & "','" & _
replace(request.form("add"),"'","''") & "','" & _
request.server_variables("REMOTE_ADDR") & "')"
connect.execute sql,,128
Connect.Close
Set Connect = Nothing
end if
------------------
essentitia preter non sans multiplicandum
Jag har ändrat add till auth... är denna koden rätt då?
If Request.Querystring("vad") = "save" Then
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & db_ad
sql = "insert into lista(namn,email,icq,auth,ip) values ('" & _
replace(request.form("namn"),"'","''") & "','" & _
replace(request.form("email"),"'","''") & "','" & _
replace(request.form("icq"),"'","''") & "','" & _
replace(request.form("auth"),"'","''") & "','" & _
request.server_variables("REMOTE_ADDR") & "')"
connect.execute sql,,128
Connect.Close
Set Connect = Nothing
end if
tack för hjälpen..
------------------
//Hulth
Ja, såvitt jag kan se och under förutsättning att alla kolumner är av typen text.
------------------
essentitia preter non sans multiplicandum