problemas con ADO

06/05/2005 - 13:56 por luis qTp | Informe spam
tengo la siguiente función a la que llamo desde una página ASP.

Function saca_texto(pagina)
Dim cadena
'on error resume next
dim conn, registro, consulta, num_resultados

consulta = "SELECT * FROM textos WHERE (pagina=" & CInt(pagina) & ") ORDER
BY parrafo"
strconn = "DRIVER={Microsoft Access Driver
(*.mdb)};DBQ=C:\Inetpub\wwwroot\miweb\db\midb.mdb"
set conn = Server.Createobject("ADODB.connection")
conn.open strconn

Set registro = Server.CreateObject ("ADODB.RecordSet")
registro.Open consulta, conn, 1 ' adOpenStatic
If (Err.Number <> 0) Then
procesar_error "saca_texto(pagina) en negocio.asp ", Err
End If
num_resultados = registro.RecordCount
if num_resultados > 0 then
while not registro.eof
titulo = registro("titulo")
texto = registro("texto")
if titulo <> "" then
cadena = cadena & "<p class=textoG>" & titulo
end if
cadena = cadena & "<p class=textoM>" & texto
registro.Movenext
wend
end if
registro.Close
conn.Close
Set registro = nothing
Set conn = nothing
saca_texto = cadena
End Function

y siempre obtengo el mismo error:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Controlador ODBC Microsoft Access]Error general No se puede
abrir la clave 'Temporary (volatile) Jet DSN for process 0x5b8 Thread 0x668
DBC 0x163900c Jet' del Registro.
/miweb/inc/negocio.asp, line 11

¿qué es lo que hago mal? he seguido al pie de la letra todas las
instrucciones que he encontrado en cuanto a conexión de ASP con ACCESS

Preguntas similare

Leer las respuestas

#6 Matias Iacono
06/05/2005 - 19:36 | Informe spam
El problema en este caso es mas especifico.

Esto pasaba muy seguido con NT. Primero, trata de tener una unica conexion
en tu pagina web, y reutilizala.

Muchas veces access no soporta multiples conexiones desde el mismo hilo de
ejecucion.

De cualquier manera, abre la base de datos y verifica los bloqueos de la
misma. Este error es tipico del acceso simultaneo al archivo. Si te fijas,
cuando abres la db o accedes a ella, esta genera un archivo nuevo, este
archivo le sirve para manejar informacion, y cuando trata de ser accedido
por otro usuario, puede generar el error que especificas.

Ademas, seria bueno que veas los permisos de la carpeta y la db en si, para
asegurarte que tienes control total sobre estos dos.

Muchas veces, la solucion consiste en simplemente poner el archivo de la db
fuera del sitio web, para que los permisos obtenidos no se vean afectados
por el entorno web.

Saludos,

Matías Iacono
Microsoft MVP ASP/ASP.net - DCE3

Profile: http://aspnet2.com/mvp.ashx?MatiasIacono
"luis qTp" escribió en el mensaje
news:YRKee.397139$
el error ahora no es el de antes, es el siguiente:

Provider (0x80004005)
Error no especificado
/miweb/inc/negocio.asp, line 11 (esta es la línea donde hago conn.open
strconn)

parecería que no cierro la conexión, pero antes de salir de la función y
devolver valores realizo la limpieza y cierre de registro y conexion:

registro.Close
conn.Close
Set registro = nothing
Set conn = nothing



"luis qTp" escribió en el mensaje
news:WOKee.397080$
he rehecho el archivo MDB y el error vuelve a saltar ahora con una
peculiaridad:

si accedo al web (y por tanto a la BD) una vez cada 60 segundos, el web
funciona perfectamente. ¿?¿?¿?¿?¿?

esto es de locos!

"Matias Iacono" escribió en el mensaje
news:
> Una posibilidad, que la base de datos este corrupta.
>
> Pueba a repararla.
>
> Saludos,
>
> Matías Iacono
> Microsoft MVP ASP/ASP.net - DCE3
>
> Profile: http://aspnet2.com/mvp.ashx?MatiasIacono
> "luis qTp" escribió en el mensaje
> news:LXIee.394986$
> > tengo la siguiente función a la que llamo desde una página ASP.
> >
> > Function saca_texto(pagina)
> > Dim cadena
> > 'on error resume next
> > dim conn, registro, consulta, num_resultados
> >
> > consulta = "SELECT * FROM textos WHERE (pagina=" & CInt(pagina) & ")
ORDER
> > BY parrafo"
> > strconn = "DRIVER={Microsoft Access Driver
> > (*.mdb)};DBQ=C:\Inetpub\wwwroot\miweb\db\midb.mdb"
> > set conn = Server.Createobject("ADODB.connection")
> > conn.open strconn
> >
> > Set registro = Server.CreateObject ("ADODB.RecordSet")
> > registro.Open consulta, conn, 1 ' adOpenStatic
> > If (Err.Number <> 0) Then
> > procesar_error "saca_texto(pagina) en negocio.asp ", Err
> > End If
> > num_resultados = registro.RecordCount
> > if num_resultados > 0 then
> > while not registro.eof
> > titulo = registro("titulo")
> > texto = registro("texto")
> > if titulo <> "" then
> > cadena = cadena & "<p class=textoG>" & titulo
> > end if
> > cadena = cadena & "<p class=textoM>" & texto
> > registro.Movenext
> > wend
> > end if
> > registro.Close
> > conn.Close
> > Set registro = nothing
> > Set conn = nothing
> > saca_texto = cadena
> > End Function
> >
> > y siempre obtengo el mismo error:
> > Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
> > [Microsoft][Controlador ODBC Microsoft Access]Error general No se


puede
> > abrir la clave 'Temporary (volatile) Jet DSN for process 0x5b8 Thread
> > 0x668
> > DBC 0x163900c Jet' del Registro.
> > /miweb/inc/negocio.asp, line 11
> >
> > ¿qué es lo que hago mal? he seguido al pie de la letra todas las
> > instrucciones que he encontrado en cuanto a conexión de ASP con
> > ACCESS
> >
> >
> >
>
>






Respuesta Responder a este mensaje
#7 luis qTp
10/05/2005 - 16:03 | Informe spam
no me preguntes porqué, pero al crear de nuevo la BD, y pegar los registros
de la antigua, todo ha funcionado de nuevo el caso es que he hecho
tantos cambios que no sé qué ha podido arreglar esto...

(otra opción que probé fue la de utilizar conexión DSN, pero no obtuve
éxito)

si vuelvo a tener problemas probaré todo lo que me indicas.
¿dónde genera ACCESS ese archivo del que hablas?

Si es un *.ldb se crea en el mismo directorio donde estaba el *.mdb, pero
cuando cierro access, el archivo se borra correctamente.

salu2 y gracias muchas.
Luis


"Matias Iacono" escribió en el mensaje
news:
El problema en este caso es mas especifico.

Esto pasaba muy seguido con NT. Primero, trata de tener una unica conexion
en tu pagina web, y reutilizala.

Muchas veces access no soporta multiples conexiones desde el mismo hilo de
ejecucion.

De cualquier manera, abre la base de datos y verifica los bloqueos de la
misma. Este error es tipico del acceso simultaneo al archivo. Si te fijas,
cuando abres la db o accedes a ella, esta genera un archivo nuevo, este
archivo le sirve para manejar informacion, y cuando trata de ser accedido
por otro usuario, puede generar el error que especificas.

Ademas, seria bueno que veas los permisos de la carpeta y la db en si,


para
asegurarte que tienes control total sobre estos dos.

Muchas veces, la solucion consiste en simplemente poner el archivo de la


db
fuera del sitio web, para que los permisos obtenidos no se vean afectados
por el entorno web.

Saludos,

Matías Iacono
Microsoft MVP ASP/ASP.net - DCE3

Profile: http://aspnet2.com/mvp.ashx?MatiasIacono
"luis qTp" escribió en el mensaje
news:YRKee.397139$
> el error ahora no es el de antes, es el siguiente:
>
> Provider (0x80004005)
> Error no especificado
> /miweb/inc/negocio.asp, line 11 (esta es la línea donde hago conn.open
> strconn)
>
> parecería que no cierro la conexión, pero antes de salir de la función y
> devolver valores realizo la limpieza y cierre de registro y conexion:
>
> registro.Close
> conn.Close
> Set registro = nothing
> Set conn = nothing
>
>
>
> "luis qTp" escribió en el mensaje
> news:WOKee.397080$
>> he rehecho el archivo MDB y el error vuelve a saltar ahora con una
>> peculiaridad:
>>
>> si accedo al web (y por tanto a la BD) una vez cada 60 segundos, el web
>> funciona perfectamente. ¿?¿?¿?¿?¿?
>>
>> esto es de locos!
>>
>> "Matias Iacono" escribió en el mensaje
>> news:
>> > Una posibilidad, que la base de datos este corrupta.
>> >
>> > Pueba a repararla.
>> >
>> > Saludos,
>> >
>> > Matías Iacono
>> > Microsoft MVP ASP/ASP.net - DCE3
>> >
>> > Profile: http://aspnet2.com/mvp.ashx?MatiasIacono
>> > "luis qTp" escribió en el mensaje
>> > news:LXIee.394986$
>> > > tengo la siguiente función a la que llamo desde una página ASP.
>> > >
>> > > Function saca_texto(pagina)
>> > > Dim cadena
>> > > 'on error resume next
>> > > dim conn, registro, consulta, num_resultados
>> > >
>> > > consulta = "SELECT * FROM textos WHERE (pagina=" & CInt(pagina) &


")
>> ORDER
>> > > BY parrafo"
>> > > strconn = "DRIVER={Microsoft Access Driver
>> > > (*.mdb)};DBQ=C:\Inetpub\wwwroot\miweb\db\midb.mdb"
>> > > set conn = Server.Createobject("ADODB.connection")
>> > > conn.open strconn
>> > >
>> > > Set registro = Server.CreateObject ("ADODB.RecordSet")
>> > > registro.Open consulta, conn, 1 ' adOpenStatic
>> > > If (Err.Number <> 0) Then
>> > > procesar_error "saca_texto(pagina) en negocio.asp ", Err
>> > > End If
>> > > num_resultados = registro.RecordCount
>> > > if num_resultados > 0 then
>> > > while not registro.eof
>> > > titulo = registro("titulo")
>> > > texto = registro("texto")
>> > > if titulo <> "" then
>> > > cadena = cadena & "<p class=textoG>" & titulo
>> > > end if
>> > > cadena = cadena & "<p class=textoM>" & texto
>> > > registro.Movenext
>> > > wend
>> > > end if
>> > > registro.Close
>> > > conn.Close
>> > > Set registro = nothing
>> > > Set conn = nothing
>> > > saca_texto = cadena
>> > > End Function
>> > >
>> > > y siempre obtengo el mismo error:
>> > > Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
>> > > [Microsoft][Controlador ODBC Microsoft Access]Error general No se
> puede
>> > > abrir la clave 'Temporary (volatile) Jet DSN for process 0x5b8


Thread
>> > > 0x668
>> > > DBC 0x163900c Jet' del Registro.
>> > > /miweb/inc/negocio.asp, line 11
>> > >
>> > > ¿qué es lo que hago mal? he seguido al pie de la letra todas las
>> > > instrucciones que he encontrado en cuanto a conexión de ASP con
>> > > ACCESS
>> > >
>> > >
>> > >
>> >
>> >
>>
>>
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida