Modificar un script de autenticación

Estoy haciendo la seguridad de mi página. En la base de datos ya tengo anotada la cedula de los que pueden ingresar. Tome un script de seguridad de la red (philwebsecurity) y lo instale, pero le estoy haciendo las modificaciones pertinentes. Cuando alguien llena el formulario signupprocess deseo que haga lo siguiente:
strSQL = "UPDATE users SET username - = '" & username & "',password = '" & -password & "',firstname = '" & -firstname & "',surname = '" & surname- & "',email = '" & email & "',dob = '" -& dob & "',starsign = '" & starsign -& "',sex = '" & sex & "',icon = '" & -icon & "',sendemail = '" & sendemail -& "' WHERE cedula = '" & cedula & "'"
Set rsUsuarios = Server.CreateObject("ADODB.Recordset")
rsUsuarios.Open strSQL, siteusers, 3
en vez de lo que esta preestablecido que es esto:
Set rsUser = Server.CreateObject("ADODB.Recordset")
rsUser.open "users", conn, 3, 3
rsUser.Update
rsUser("username") = username
rsUser("password") = password
rsUser("firstname") = firstname
rsUser("surname") = surname
rsUser("email") = email
rsUser("dob") = dob
rsUser("starsign") = starsign
rsUser("sex") = sex
rsUser("icon") = icon
rsUser("sendemail") = sendemail
rsUser.Update
Pero me da este error:
Tipo de error:
ADODB. Field (0x80020009)
El valor de BOF o EOF es True, o el actual registro se eliminó; la operación solicitada requiere un registro actual.
/aspcrap/index.asp
¿Qué debo hacer? ¿Habrá algo malo en lo que hice?

3 Respuestas

Respuesta
1
El problema, es que cuando abres la tabla, el cursor no apunta a ningún registro, para que te funcione tienes que abrir el recordset en un registro determinado:
consulta = "select * from users where cedula = '" & cedula & "'"
Set rsUser = Server.CreateObject("ADODB.Recordset")
RsUser. Open consulta, conn, 3, 3
...
Espero haberte sido de ayuda, un saludote. H.
Respuesta
1
Lo primero es saludarte...
Comencemos por lo que venimos...
En el script que estas usando para la conexión (que a mi parecer es mejor que el sugerido por philwebsecurity)
Pueden estar sucediendo dos cosas:
1-. Dentro de la expresión SQL tienes unos nombres de variable con el signo (-) por ejemplo, ", password = '" & -password & "',", realmente nunca he visto este tipo de cosas... y tal vez los datos no están llegando como deberían llegar...
2-. Te recomiendo que utilices este script de conexión como una función (que es lo que ya hago y me parece bastante practico):
<%
MM_Citecsa_conn_STRING = "DRIVER={SQL Server};server=earcia;uid=sa;pwd=;database=Citecsa"
function Nuevo_RS(nombre,sql)
Set nombre = Server.CreateObject("ADODB.Recordset")
nombre.ActiveConnection = MM_Citecsa_conn_STRING
nombre.Source = sql
nombre.CursorType = 0
nombre.CursorLocation = 3
nombre.LockType = 1
nombre.Open()
mombre_numRows = 0
end function
%>
Este Script lo colocas dentro del <HEAD> </HEAD> y cuando necesites declarar un Recordset lo que tienes que hacer el pasarle el nombre y la expresión SQL:
<%
Nuevo_RS nombre_Recordset,"Select * From Clientes"
%>
Y cuando necesites mostrar un campo en la Pagina lo que haces es
<%=nombre_Recordset("Nombredelcampo")%>
en tu caso sugiero que lo hagas de la siguiente forma:
<%
strSQL = "UPDATE users SET username = '" & username & "',password = '" & password & "',firstname = '" & firstname & "',surname = '" & surname & "',email = '" & email & "',dob = '" & dob & "',starsign = '" & starsign & "',sex = '" & sex & "',icon = '" & icon & "',sendemail = '" & sendemail & "' WHERE cedula = '" & cedula & "'"
Nuevo_RS users,strSQL
%>
Recuerda que los tipos de Datos también Influyen revisa si dentro de tu BD esta configurado el campo Cedula como Numérico y si tiene un formato especificado...
Si no has solucionado el problema me avisas y lo vemos de otra manera!
;) Elis
Respuesta
1
Si lo que quieres hacer es utilizar la primera sentencia SQL, debes ejecutarla desde el objeto Connection y no el Recordset. Como se trata de una consulta de actualización, no devuelve datos. Lo correcto sería:
siteusers.execute strSQL

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas