problemas con acceso a datos

26/04/2005 - 12:57 por luis qTp | Informe spam
Hola

tengo una página ASP que debe extraer datos, mediante una función, de una BD
access y me da algunos problemas bastante serios:

si arranco el ordenador y pruebo la web va estupendamente, pero en el
momento que abro el archivo MDB y lo modifico, aunque luego lo cierre deja
de funcionar todo el web. debo reiniciar el S.O. para que vuelva a funcionar

es un poco engorroso pues cada vez que quiero modificar la BD debo copiarla
fuera del inetpub, modificarla y sobreescribir la original con la copia.

¿alguien sabe que puede ocurrir? ¿qué hago mal?

La estructura es la siguiente:

pagina.asp

contiene unos includes a funciones y procedimientos que se van a usar desde
varios ASP

<!-- #INCLUDE file="inc/iobd.asp" -->
<!-- #INCLUDE file="inc/negocio.asp" -->

<%

dim conexion
conectar conexion (es un procedimiento incluido en iobd.asp para facilitar
las conexiones/desconexiones de la BD)

además, contiene una llamada a una función saca_texto(1) que recoge el
parámetro 1 y devuelve una cadena de texto

desconectar conexion

Los procedimientos conectar/desconectar son los siguientes y estan en
iobd.asp:

sub conectar(byref conexion)
'on error resume next
'abrimos la base de datos
Set conexion = Server.CreateObject("ADODB.Connection")
if Request.ServerVariables("SERVER_NAME") = "jupiter" then
'conexion no dsn
conexion.Open "DRIVER={Microsoft Access Driver (*.mdb)};
DBQ=c:\Inetpub\wwwroot\web\db\web.mdb"
else
conexion.Open "DRIVER={Microsoft Access Driver (*.mdb)};
DBQ=c:\Inetpub\wwwroot\web\db\web.mdb"
end if
If (Err.Number <> 0) Then
procesar_error "conectar(byref conexion) en iobd.asp.", Err
End If
end sub

sub desconectar(byref conexion)
'on error resume next
'cerramos la conexion
conexion.Close
set conexion = Nothing
If (Err.Number <> 0) Then
procesar_error "desconectar(byref conexion) en iobd.asp.", Err
End If
end sub

la funcion saca_texto que se encuentra en negocio.asp es la siguiente:

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

consulta = "SELECT * FROM textos WHERE (pagina=" & CInt(pagina) & ") ORDER
BY parrafo"
Set registro = Server.CreateObject ("ADODB.RecordSet")
registro.Open consulta, conexion, 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
Set registro = nothing
saca_texto = cadena
End Function
 

Leer las respuestas

#1 Matias Iacono
26/04/2005 - 17:46 | Informe spam
Generalmente ese problema se debe al tipo de bloqueo que se hace sobre el
archivo.

En las propiedades de la base de datos puedes cambiar este bloqueo.

Por otro lado, siempre es conveniente que la DB en el caso de Access este
fuera del wwwroot.

Saludos,

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

Profile: http://aspnet2.com/mvp.ashx?MatiasIacono
"luis qTp" escribió en el mensaje
news:d8pbe.150482$
Hola

tengo una página ASP que debe extraer datos, mediante una función, de una


BD
access y me da algunos problemas bastante serios:

si arranco el ordenador y pruebo la web va estupendamente, pero en el
momento que abro el archivo MDB y lo modifico, aunque luego lo cierre deja
de funcionar todo el web. debo reiniciar el S.O. para que vuelva a


funcionar

es un poco engorroso pues cada vez que quiero modificar la BD debo


copiarla
fuera del inetpub, modificarla y sobreescribir la original con la copia.

¿alguien sabe que puede ocurrir? ¿qué hago mal?

La estructura es la siguiente:

pagina.asp

contiene unos includes a funciones y procedimientos que se van a usar


desde
varios ASP

<!-- #INCLUDE file="inc/iobd.asp" -->
<!-- #INCLUDE file="inc/negocio.asp" -->

<%

dim conexion
conectar conexion (es un procedimiento incluido en iobd.asp para facilitar
las conexiones/desconexiones de la BD)

además, contiene una llamada a una función saca_texto(1) que recoge el
parámetro 1 y devuelve una cadena de texto

desconectar conexion

Los procedimientos conectar/desconectar son los siguientes y estan en
iobd.asp:

sub conectar(byref conexion)
'on error resume next
'abrimos la base de datos
Set conexion = Server.CreateObject("ADODB.Connection")
if Request.ServerVariables("SERVER_NAME") = "jupiter" then
'conexion no dsn
conexion.Open "DRIVER={Microsoft Access Driver (*.mdb)};
DBQ=c:\Inetpub\wwwroot\web\db\web.mdb"
else
conexion.Open "DRIVER={Microsoft Access Driver (*.mdb)};
DBQ=c:\Inetpub\wwwroot\web\db\web.mdb"
end if
If (Err.Number <> 0) Then
procesar_error "conectar(byref conexion) en iobd.asp.", Err
End If
end sub

sub desconectar(byref conexion)
'on error resume next
'cerramos la conexion
conexion.Close
set conexion = Nothing
If (Err.Number <> 0) Then
procesar_error "desconectar(byref conexion) en iobd.asp.", Err
End If
end sub

la funcion saca_texto que se encuentra en negocio.asp es la siguiente:

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

consulta = "SELECT * FROM textos WHERE (pagina=" & CInt(pagina) & ")


ORDER
BY parrafo"
Set registro = Server.CreateObject ("ADODB.RecordSet")
registro.Open consulta, conexion, 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
Set registro = nothing
saca_texto = cadena
End Function



Preguntas similares