Problemas al insertar en una BD

20/12/2004 - 05:18 por Daltonic | Informe spam
Buenas.
A ver si me podéis echar una mano. Llevo poco tiempo con ASP. Mirad,
estoy liado con una práctica de ASP que me da el siguiente error:
Tipo de error:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Controlador ODBC Microsoft Access] No se puede actualizar.
Base de datos u objeto de sólo lectura.
/Practica19/index.asp, línea 64

Me da error a la hora de intentar insertar en la base de datos. Puedo
mostrar todas sus tablas, pero en cuanto llamo al Update, me sale ese
error.
No lo entiendo, pues es la misma base de datos que utilicé en su momento
para JDBC (acceso a base de datos con java), con lo que el DSN es el
mismo. Y en java sí que pude insertar, eliminar y actualizar.
Aquí os pego parte del código (forma parte de un formulario y muchas más
cosas).
Para explicárlo más rápido, primero se llama a "conectarBD", luego se
muestra la tabla antes de insertar, y luego a "insertarBD".
El fallo aparece en la línea "rsUpdate.Update". Os señalo la línea con un
comentario.
¡Ah! La variable objConexion está declarada al comienzo del código
original como global.
Creo que es un fallo de administración de sistema, que el directorio
donde está ubicada la base de datos no tiene permiso de escritura. Le he
dado permisos, pero nada.
Uso windows XP.

Aquí va el código. Por cierto, no sé si es mejor usar un Execute utilizando
del tirón sentencias sql, o hacerlo como yo lo he hecho...

<% Sub conectarBD()
Set objConexion = Server.CreateObject("ADODB.Connection")
objConexion.Mode=adModeReadWrite
objConexion.ConnectionString="DSN½Practica19"
objConexion.Open
end Sub

Sub desconectarBD()
objConexion.Close
Set ojbConexion=nothing
end Sub

Sub insertarBD
Set rsUpdate=Server.CreateObject("ADODB.Recordset")
rsUpdate.Open
"Ejemplo",objConexion,adOpenStatic,adLockOptimistic,adCmdTableDirect
rsUpdate.AddNew
rsUpdate("Nombre")=Request.Form("Nombre")
rsUpdate("Email")=Request.Form("Email")
rsUpdate("Url")=Request.Form("Url")
rsUpdate.Update 'Aquí es donde revienta el
prograaamaaaa!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
rsUpdate.Close
Set rsUpdate=nothing
end Sub
%>
 

Leer las respuestas

#1 Jhonny Vargas P. [MVP]
20/12/2004 - 13:46 | Informe spam
Revisa que en la ubicación del MDB tengan acceso los usuarios
IUSR_nombreservidor y el IWAM_nombreservidor deberían tener acceso de
lectura y escritura sobre la carpeta de donde se encuentra el MDB.

PS: Si tu MDB se encuentra en una carpeta virtual, es decir, dentro del
inetpub te recomiendo que la quites de ese lugar y la coloques fuera de tus
directorios virtuales, como por ejemplo c:\basesdedatos y sobre esta carpeta
asignar los permisos necesarios.


Saludos,
Jhonny Vargas P.
Santiago de Chile


"Daltonic" escribió en el mensaje
news:84i8beqo4eb8$

Buenas.
A ver si me podéis echar una mano. Llevo poco tiempo con ASP. Mirad,
estoy liado con una práctica de ASP que me da el siguiente error:
Tipo de error:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Controlador ODBC Microsoft Access] No se puede actualizar.
Base de datos u objeto de sólo lectura.
/Practica19/index.asp, línea 64

Me da error a la hora de intentar insertar en la base de datos. Puedo
mostrar todas sus tablas, pero en cuanto llamo al Update, me sale ese
error.
No lo entiendo, pues es la misma base de datos que utilicé en su momento
para JDBC (acceso a base de datos con java), con lo que el DSN es el
mismo. Y en java sí que pude insertar, eliminar y actualizar.
Aquí os pego parte del código (forma parte de un formulario y muchas más
cosas).
Para explicárlo más rápido, primero se llama a "conectarBD", luego se
muestra la tabla antes de insertar, y luego a "insertarBD".
El fallo aparece en la línea "rsUpdate.Update". Os señalo la línea con un
comentario.
¡Ah! La variable objConexion está declarada al comienzo del código
original como global.
Creo que es un fallo de administración de sistema, que el directorio
donde está ubicada la base de datos no tiene permiso de escritura. Le he
dado permisos, pero nada.
Uso windows XP.

Aquí va el código. Por cierto, no sé si es mejor usar un Execute
utilizando
del tirón sentencias sql, o hacerlo como yo lo he hecho...

<% Sub conectarBD()
Set objConexion = Server.CreateObject("ADODB.Connection")
objConexion.Mode=adModeReadWrite
objConexion.ConnectionString="DSN½Practica19"
objConexion.Open
end Sub

Sub desconectarBD()
objConexion.Close
Set ojbConexion=nothing
end Sub

Sub insertarBD
Set rsUpdate=Server.CreateObject("ADODB.Recordset")
rsUpdate.Open
"Ejemplo",objConexion,adOpenStatic,adLockOptimistic,adCmdTableDirect
rsUpdate.AddNew
rsUpdate("Nombre")=Request.Form("Nombre")
rsUpdate("Email")=Request.Form("Email")
rsUpdate("Url")=Request.Form("Url")
rsUpdate.Update 'Aquí es donde revienta el
prograaamaaaa!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
rsUpdate.Close
Set rsUpdate=nothing
end Sub
%>

Preguntas similares