Bdd modificar

Tengo una conexión a una bdd que almacena noticias. Tiene campos de id, titulo, descripción, contenido, fecha y clicks. Bueno consigo que los datos se muestren en una página de cualquier noticia (¿con leer_noticia.asp? Id=3) (aviso: soy novato en asp) pero no consigo sumarle 1 al valor del campo clicks. Tengo el siguiente código, es obvio que algo esta mal, pero no se qué es:
strsql = "SELECT * FROM noticias where id=" & cual
' Creamos la conexion a la base de datos
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="&Server.MapPath("general/noticias.mdb")
Set RSnoticias = Server.CreateObject("ADODB.Recordset")
Todavía no abro el recordset para leer, primero modifico (lo intento) lo hago una consulta con sql:
dim cliks
cliks=rsnoticias("clicks")
strsql2 = "UPDATE noticias SET clicks = cliks WHERE id =" & cual
RSnoticias.Open strSQL2, oConn,2,2
rsnoticias.close
y luego seria cuando abro el recordset para leer:
RSnoticias.Open strSQL, oConn,2,2
Ayudame con el código para modificar la bdd por favor, llevo bastante tiempo con este problema.
Muchas gracias.

1 Respuesta

Respuesta
1
El problema es simple. .. Estas olvidando de sumar uno a clicks ... :)
Vos estas escribiendo:
UPDATE noticias SET clicks = cliks WHERE id =" & cual
pero seria
UPDATE noticias SET clicks = cliks + 1 WHERE id =" & cual
la diferencia es "SET clicks = cliks + 1 "
Lo de sumar una visita lo habré borrado haciendo pruebas. Lo curioso es que da error, y no se porqué. Ahora tengo el siguiente código:
dim cual, strsql,strsql2
cual=request.querystring("id")
strsql = "SELECT * FROM noticias where id=" & cual
' Creamos la conexion a la base de datos
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="&server.mappath("general/noticias.mdb")
Set RSnoticias = Server.CreateObject("ADODB.Recordset")
'sumar un click a la noticia
dim cliks
cliks=rsnoticias("clicks")
strsql2 = "UPDATE noticias SET clicks = cliks + 1 WHERE id =" & cual
RSnoticias.Open strSQL2, oConn,2,2
rsnoticias.close
' para leer
RSnoticias.Open strSQL, oConn,1,2
Y tengo este error:
Tipo de error:
ADODB.Recordset (0x800A0CC1)
No se encontró el elemento en la colección que corresponde con el nombre o el ordinal pedido.
leer_noticia.asp, línea 21
Gracias por responder.
Por lo que te esta dando el error, es como que no esta bien escrrita la sintaxis del sql.
Un ej, si escribes
sql = "select * from tabla where id = "
Te va a dar el error que te esta apareciendo a vos.
Fíjate en la linea 21 a que sttring de sql esta llamando .. seguramente, no estas pasando el parámetro id ...
jiji .. ya lo encontré
Estas escribiendo:
cliks = rsnoticias("clicks")
Pero todavía no esta abierto el recordset rsnoticias, por eso te da error
En realidad esta linea no te sirve para nada, tendrías que quitarla
No creo que sea eso, porque quito toda la parte que suma un click, y funciona perfectamente, el fallo esta aquí casi seguro:
'sumar un click a la noticia
dim cliks
cliks=rsnoticias("clicks")
strsql2 = "UPDATE noticias SET clicks = cliks + 1 WHERE id =" & cual
RSnoticias.Open strSQL2, oConn,2,2
rsnoticias.close
Si no también se podría hacer sin sql, pero me tendrías que decir que números tengo que poner detrás de RSnoticias.Open strSQL2, oConn, num1, num2 porque todavía no me aclaro con ello.
Gracias
Solucionado lo del recorset, ahora va perfecto, pero me sigue saliendo un error, y es porque no se que números hay que poner al abrir el recordset para dar permisos de actualización:
Tipo de error:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Controlador ODBC Microsoft Access] La operación debe usar una consulta actualizable.
Y estará en la linea en la que abro el recordset:
RSnoticias.Open strSQL, oConn,2,2
Pongo, 2,2 para leerlo y lo lee, pero ¿cuáles son los correctos para leer y actualizar campos?
Muchísimas gracias por toda tu ayuda prestada.
No, el error que te esta dando, es porque el archivo mdb no tiene permiso de escritura o bien, podrías darle permiso de scritura al directorio en que esta el archivo mdb.
Fíjate que desde el iis, todos los directorios tiene permisos de lectura. A este directorio en particular tienes que darle permiso de escritura para que pueda guardar datos en el access
¿Y qué paso?
¿Pudiste resolver este problema?
Te pregunto, porque tengo abierta todavía la pregunta .. :)
El error:
"La operación debe usar una consulta actualizable."
Se debe a un problema de permisos en la base
Nico
Lo siento, estoy intentando todavía hacerlo. Creo que he dado los permisos, pero el código aun no me funciona.
Lo he solucionado por fiiin. Muchísimas gracias, no se si era un error de código o de permisos pero ya esta funcionando. Ademas he puesto un session para que no sume siempre.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas