Højest sandsynligt noget med at du ikke er koblet rigtigt op mod din database (eller et andet object), og ikke kan udføre det du forsøger.
Kom med noget kode, så er det væsentligt nemmere at hjælpe...
Her er den kode det er galt med:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db.mdb")
Sql = "SELECT * FROM users WHERE pkuserid = " & Session("userid")
Set Rs = Conn.execute(Sql)
If Rs("points") >= Request.Form("points") THEN
intTmp = (Rs("points") - Request.Form("points"))
Rs("points_b") = Request.Form("points") <----Det er denne linie
Rs("points") = intTmp
Rs.UpDate
rs.AddNew
rs("Navn") = Request.form("Navn")
rs("kat") = Request.form("kat")
rs("f_points") = Request.form("points")
rs("Besked") = Request.form("Besked")
rs("Dato") = Now()
rs("IP") = request.servervariables("remote_Addr")
rs.Update
Else
Response.redirect("fejl.asp")
End If
%>
Jeg har vist hvad for en linie det er galt med
du kan ikke opdatere en RecordSet ved at sætte den = et element fra din form collection
Altså...
Rs("point_b") = Request.Form("points")
...må man ikke!
så skal du lave en update....
SQL = "UPDATE users SET points_b = Request.Form("points") WHERE pkuserid = "& Session("userid")
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db.mdb")
Sql = "SELECT * FROM users WHERE pkuserid = " & Session("userid")
Set Rs = Conn.execute(Sql)
If Rs("points") >= Request.Form("points") THEN
intTmp = (Rs("points") - Request.Form("points"))
rs.AddNew
Rs("points_b") = Request.Form("points")
Rs("points") = intTmp
rs("Navn") = Request.form("Navn")
rs("kat") = Request.form("kat")
rs("f_points") = Request.form("points")
rs("Besked") = Request.form("Besked")
rs("Dato") = Now()
rs("IP") = request.servervariables("remote_Addr")
rs.Update
Else
Response.redirect("fejl.asp")
End If
%>
Prøv med denne!
//>Rune
Rune> Den sender videre til fejl siden selvom at points i databasen er støre end det der står i formen
Hmm ok, din fejl kommer fordi du prøver at tildele et recordset en værdi uden for et tildelingscope. Du er derfor nødt til at lægge det over i variabler først!
-Men hvad er det egentlig du vil ha' den til?
fx.:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("../db.mdb")
Sql = "SELECT * FROM users WHERE pkuserid = " & Session("userid")
Set Rs = Conn.execute(Sql)
If Rs("points") >= Request.Form("points") THEN
intTmp = (Rs("points") - Request.Form("points"))
Rs("points_b") = Request.Form("points") <---- Hvad er det du vil her?
Rs("points") = intTmp
Rs.UpDate
rs.AddNew
rs("Navn") = Request.form("Navn")
rs("kat") = Request.form("kat")
rs("f_points") = Request.form("points")
rs("Besked") = Request.form("Besked")
rs("Dato") = Now()
rs("IP") = request.servervariables("remote_Addr")
rs.Update
Else
Response.redirect("fejl.asp")
End If
%>
//>Rune
Det er et point system til et forum. Når man opretter et indlæg skriver man eks. 10 i points og så en besked. Så skal den så tjække om brugeren har så mange points, og hvis han har skal den trække de 10 points fra i kollonnen points og smide dem over i poinst_b og hvis ikke han har de points så skal den sende videre til fejl.asp
men som den er nu sender den videre til fejl.asp lige meget hvad
Prøv at konvetere det til en Integerværdi!
If CInt(Rs("points")) >= CInt(Request.Form("points")) Then
//>Rune
så kommer den med en fejl i linien med rs.AddNew
Object or provider is not capable of performing requested operation.
Vil du updatere eller vil du tilføje?
-hvis du vil tilføje skal du fjerne din WHERE clouse...
//>Rune
jeg skal både tilføje og opdatere. Det skal være sådan at bnrugerens points skal opdateres med det nye tal, og så skal indlæget tilføjes til databasen
Der er ikke noget der virker så jeg lukker