problemas al insertar en al base de datos

04/04/2005 - 16:06 por cousi | Informe spam
Hola a todos. Estoy intentando insertar unos datos en una
base de datos access, pero no consigo que funcione. Los
datos los quiero traer de otro formulario que tiene tres
cajas de texto. He comprobado que el directorio virtual
tengo acceso a escritura. Estoy trabajando con windows XP
profesiona. El codigo es el siguiente:

<%
Response.Buffer = true
dim cnn,rst
' Creamos la conexión a la base de datos sin DSN
set cnn = Server.CreateObject("ADODB.Connection")
set rst = Server.CreateObject("ADODB.RecordSet")
'cnn.Open "Driver={Microsoft Access Driver (*.mdb)};
DBQ=" & Server.MapPath("noticias.mdb")
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=d:\pagina weboticias.mdb"
sqltext = "SELECT * FROM Noticias"
rst.Open sqltext,cnn,3,3

'Recogemos los datos y validamos que no haya ningun campo
vacio
dim titulo, copete, noticia
titulo = Request.Form("titulo")
copete = Request.Form("copete")
noticia = Request.Form("noticia")

if copete = "" or titulo ="" or noticia ="" then
error = "Debe completar todos los datos."
Response.Write error
Response.End
end if

rst.AddNew
rst("titulo") = titulo
rst("copete") = copete
rst("noticia") = noticia
rst.update
' aqui lo he intentando como siempre lo he echo en visual
basic sin problemas pero me dice que nones
'dim csql
'csql = "INSERT INTO noticias (titulo, copete, noticia)
VALUES ('concha', 'concha', 'concha')"
'cnn.execute csql
'Terminamos e imprimimos un mensaje
Response.Write "La noticia se ha ingresado con exito"
%>
<html>

<head>
<title>Página nueva </title>
</head>

<body>
</body>
</html>

Asi como esta el codigo ahora me da el siguiente error:

Tipo de error:
ADODB.Recordset (0x800A0CB3)
El Recordset actual no admite actualizaciones. Puede ser
una limitación del proveedor o del tipo de bloqueo
seleccionado.
/prueba/agrega_noticia.asp, línea 26

Y si pruebo de la otra forma, como siempre lo hago en
visual basic me dice

Tipo de error:
Microsoft JET Database Engine (0x80004005)
La operación debe usar una consulta actualizable.
/prueba/agrega_noticia.asp, línea 33

Por que sucede esto. Muchas gracias.

Jose Mª Cousiño
 

Leer las respuestas

#1 Matias Iacono
04/04/2005 - 16:33 | Informe spam
Ten en cuenta que no solo el directorio necesita permisos de escritura, si
no que el archivo en si tambien debe tener. En este caso la base de datos.

Si no, prueba de sacar la DB fuera del directorio virtual del sitio web, por
ejemplo en tu C y a ver que pasa.

saludos,

Matias Iacono
Microsoft MVP ASP/ASP.net

Perfil: http://aspnet2.com/mvp.ashx?MatiasIacono
"cousi" wrote in message
news:194101c5391f$8c2dac20$
Hola a todos. Estoy intentando insertar unos datos en una
base de datos access, pero no consigo que funcione. Los
datos los quiero traer de otro formulario que tiene tres
cajas de texto. He comprobado que el directorio virtual
tengo acceso a escritura. Estoy trabajando con windows XP
profesiona. El codigo es el siguiente:

<%
Response.Buffer = true
dim cnn,rst
' Creamos la conexión a la base de datos sin DSN
set cnn = Server.CreateObject("ADODB.Connection")
set rst = Server.CreateObject("ADODB.RecordSet")
'cnn.Open "Driver={Microsoft Access Driver (*.mdb)};
DBQ=" & Server.MapPath("noticias.mdb")
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=d:\pagina weboticias.mdb"
sqltext = "SELECT * FROM Noticias"
rst.Open sqltext,cnn,3,3

'Recogemos los datos y validamos que no haya ningun campo
vacio
dim titulo, copete, noticia
titulo = Request.Form("titulo")
copete = Request.Form("copete")
noticia = Request.Form("noticia")

if copete = "" or titulo ="" or noticia ="" then
error = "Debe completar todos los datos."
Response.Write error
Response.End
end if

rst.AddNew
rst("titulo") = titulo
rst("copete") = copete
rst("noticia") = noticia
rst.update
' aqui lo he intentando como siempre lo he echo en visual
basic sin problemas pero me dice que nones
'dim csql
'csql = "INSERT INTO noticias (titulo, copete, noticia)
VALUES ('concha', 'concha', 'concha')"
'cnn.execute csql
'Terminamos e imprimimos un mensaje
Response.Write "La noticia se ha ingresado con exito"
%>
<html>

<head>
<title>Página nueva </title>
</head>

<body>
</body>
</html>

Asi como esta el codigo ahora me da el siguiente error:

Tipo de error:
ADODB.Recordset (0x800A0CB3)
El Recordset actual no admite actualizaciones. Puede ser
una limitación del proveedor o del tipo de bloqueo
seleccionado.
/prueba/agrega_noticia.asp, línea 26

Y si pruebo de la otra forma, como siempre lo hago en
visual basic me dice

Tipo de error:
Microsoft JET Database Engine (0x80004005)
La operación debe usar una consulta actualizable.
/prueba/agrega_noticia.asp, línea 33

Por que sucede esto. Muchas gracias.

Jose Mª Cousiño

Preguntas similares