Los Foros de ASPTutor.com
Home | Perfil | Registrarse | Temas Activos | Miembros | Buscar | FAQ
Usuario:
Password:
 Todos los Foros
 ADO
 No puedo grabar en mi base de datos
 Foro Bloqueado  Tema Bloqueado


Autor Temas
isidorocg
New Member

España
76 Posts
Mensajes - 15 Mar 2002 :  22:15:05  Ver Perfil  Enviar Email
Hola, trabajo con access 2000.
Acceder a la base y leer informacion de ella sin problemas pero al intentar guardar datos me sale el siguiente 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.
Despues me indica la linea donde intenta guardar en la base de datos.

El caso es que tengo dado el permiso de escritura en el IIS.

Anteriormente usaba PWS y funcionaba perfectamente.

Gracias.


aalaiz
Junior Member

España
374 Posts
Posted - 16 Mar 2002 :  17:38:26  Ver perfil  Enviar e-mail
Hola.

¿Tienes, a nivel de Win 2000, no de IIS, permisos de escritura?.

Saludos


Inicio Pagina

Lobezno
Starting Member

España
20 Posts
Posted - 17 Mar 2002 :  13:48:07  Ver perfil  Enviar e-mail
Hola, Tu afirmación de que con PWS te funcionaba y con IIS no, me desconcierta un poco, pero las veces que me ha dado ese mismo error ha sido por que tenía mal configurado el cerrojo del recordSet. No recuerdo el nombre de la propiedad pero determinaba el tipo de acceso, es decir, si permitía la escritura, etc. Por defecto abre el rs con sólo lectura. Busca en cualquier manual de ado, la definición del cerrojo en los recodset o las conexiones. Suerte!!

Lumalop
Ing. Tec. InformaticoInicio Pagina

Abel
Starting Member

Peru
20 Posts
Posted - 18 Mar 2002 :  02:43:35  Ver perfil  Enviar e-mail
Hola amigos, yo también he tenido ese mismo problema. A continuación tienen el código:
(ojo ... por un motivo que no comprendo se ha editado mi objeto de recordset como r****s, pero creo que eso no tiene importancia).

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Contador de accesos</title>
<!-- #include file="../adovbs.inc" -->
</head>

<body>

<%
thisURL = Request.ServerVariables("PATH_INFO")
Response.Write "<p>El URL de esta página es: " & thisURL & "</p>" & vbCrLf

Set cnn1 = Server.CreateObject("ADODB.Connection")
openStr = "driver={Microsoft Access Driver (*.mdb)};" & _
"dbq=" & Server.MapPath("coinclub.mdb")
cnn1.Open openStr,"",""

sql = "SELECT url, hitcnt " & _
"FROM hitcounts " & _
"WHERE url = '" & thisURL & "';"
Set r****s = Server.CreateObject("ADODB.Recordset")
r****s.Open sql, cnn1, adOpenDynamic, adLockPessimistic, adCmdText

If r****s.EOF Then
r****s.AddNew
r****s("url") = thisURL
curCount = 1
Else
curCount = r****s("hitcnt") + 1
End If
r****s("hitcnt") = curCount
r****s.Update
Response.Write "<p>Accesos a esta página hasta ahora: " & curCount

r****s.Close
Set r****s = Nothing
cnn1.Close
Set cnn1 = Nothing
%>

</body>

</html>


Edited by - Abel on 18 Mar 2002 02:46:49

Edited by - Abel on 18 Mar 2002 02:48:49

Edited by - Abel on 18 Mar 2002 02:53:02

Edited by - Abel on 18 Mar 2002 02:57:21

Edited by - Abel on 18 Mar 2002 02:58:15Inicio Pagina

Jotaelex
New Member

España
51 Posts
Posted - 18 Mar 2002 :  11:41:19  Ver perfil  Enviar e-mail  Visit Jotaelex's Homepage
Hola!

A mí también me ha dado ese mismo error. Puede ser que no hayas cerrado el objeto recorset anteriormente y la BBDD se te haya quedado abierta. Prueba a poner al final de la página:

objRS.close
Set objRS = Nothing

Nota: objRS hace referencia al nombre del objeto Recordset.

Salu2Inicio Pagina

isidorocg
New Member

España
76 Posts
Posted - 20 Mar 2002 :  13:00:12  Ver perfil  Enviar e-mail
Tengo cerrado correctamente los recordsets y me sigue diciendo el mismo error.

Os pongo la zona caliente del programa:

<%
const adopenkeyset = 1
const adlockoptimistic = 3

turnos=Request.Form("turnos")
'conexion con la base de datos
set conn=Server.CreateObject("ADODB.connection")
conn.Open "CCDB"
set rs_tg=CreateObject("ADODB.recordset")
SQLtxt_tg="Select * from TURNO_GRUPO where nombre='TURNO_GRUPO' "
rs_tg.cursortype=adopenkeyset
rs_tg.locktype=adlockoptimistic
rs_tg.Open SQLtxt_tg,conn
rs_tg("turno")=turnos
rs_tg.update
%>

Recibe los datos y lo guarda en la variable turnos, abre la conexion, el recordset, y en lineas mas abajo los cierro.

La linea de error que me marca es justo en cuando hago el update.

Como ya he dicho, lo curioso, es que en otro ordenador bajo win98 y PWS rula bien.

Por cierto, donde compruebo que mi aplicaion tiene permiso de escritura en win2000?

Gracias.

Inicio Pagina

isidorocg
New Member

España
76 Posts
Posted - 20 Mar 2002 :  18:59:27  Ver perfil  Enviar e-mail
Ya me rula (!)

El problema radicaba en los permisos, pero era algo mas lioso de lo que pensaba...
Para los que tengan mi mismo problema:

-Sobre el fichero de la BD en cuestion, pulsar boton drcho del raton, despues ir a Propiedades/seguridad y alli hay que ver los permisos de grupos, por ejemplo, el grupo "todos" lo tenia sin escritura, pues lo activo y ya puedo escribir en la BD.
Yo he hecho algo mas "seguro", solo le he dado permiso de escritura al IIS y no al grupo todos.

...Termine al fin la aplicacion, que por cierto, es mi trabajo fin de carrera (!!)

Un saludo.

Inicio Pagina

   
 Foro Bloqueado  Tema Bloqueado
Ir a:
Los Foros de ASPTutor.com Los Foros de ASPTutor.com
Ir al principio de la Página

 Imprimir Tema
 

Descargas de manuales¦ Ejemplos de código ¦ Artículos mas visitados ¦ Envía tu articulo ¦ Foros ¦
  Libro de visitas ¦Crea un enlace con ASPTutor 
 

    © 2001-Hasta hoy  Pedro Rufo Martín  contactar