Problemas con ASP's

25/06/2004 - 11:56 por Fernando Uranga | Informe spam
Muy buenas:

A ver si alguien me puede ayudar, porque sigo con mis problemas con mis
ASP's.

Me explico. Tenemos una serie de ASP's que usamos para guardar o mostrar
documentos encapsulados en una base de datos SQL Server. Para ello
usamos un OCX desarrollado por nosotros que tiene funciones a tal fin.
El problema es que siejecutamos algún ASP, la primera vez nos funciona
bien, pero a la segunda (y sucesivas veces), se queda "frito" y no
conseguimos que se ejcute. Es más, si tras esto inteamos ejecutar un ASP
que lo único que haga es Response.Write "Hola mundo" no lo hace. Si
cambiamos los ASP's de directorio virtual todo vuelve a funcionar una
sola vez. Me temo que el problema es del control OCX, pero no se me
ocurre qué puede estar pasando. Vuelvo a enviar el código de uno de los
ASP's a ver si algun alma caritativa me da una idea. Y si no es una
idea, por lo menos un puesto de trabajo, porque como no resuelva esto

Gracias de antemano.

Fernando Uranga

******************* Código ASP ********************************
<%option explicit%>
<%response.expires=0%>
<%response.buffer = false %>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
eOOOOOOO
<form name=Formulario>
<%
Dim Test
,sql,conn,nombrefichero,parametrocoddoc,parametrorevision,parametroversion
dim tdatos,coddoc,revision,version,tdatos1,resultado,fallo


Response.Write "Entro"nombrefichero=""
parametrocoddoc = request("CODDOC")
parametrorevision = request("REVISION")
parametroversion = request("VERSION")



Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open application("Conexion")


fallo = 0

if isnull(parametrocoddoc) or parametrocoddoc="" then
parametrocodoc =""
fallo = 1
end if

if isnull(parametrorevision) or parametrorevision="" then
parametrorevision =""
fallo = 1
end if

if isnull(parametroversion) or parametroversion="" then
parametroversion =""
fallo = 1
end if


if fallo = 0 then
sql = "select coddoc,revision,version from doc where
coddoc='"&parametrocoddoc&"' and revision='" &parametrorevision&"' and
version='"&parametroversion&"'"
tdatos = lookup(conn,sql)
if tdatos(0)<>"0" then
coddoc = tdatos(0)
revision = tdatos(1)
version = tdatos(2)
sql = "select nombre from bdo where coddoc='"&coddoc&"' and
revision='"&revision&"' and version='"&version&"'"
tdatos1 = lookup(conn,sql)
nombrefichero = tdatos1(0)

'response.write "Conexion= "& application("conexion") &
"Coddoc = " & cstr(coddoc) & "Revision = " & cstr(revision) & "Version=
" & cstr(version) & "Documento = " &
application("dirdocumentos")&cstr(nombrefichero)

Set Test = Server.CreateObject("Blobsora.UserControl1")
resultado =
Test.ExtraerBDO(application("ConexionOle"),application("BaseDatos"),cstr(coddoc),cstr(revision),cstr(version),application("dirdocumentos")&cstr(nombrefichero),0)
Set Test = Nothing
end if
end if

Conn.close
%>
</form>
</body>
</html>
<%
if nombrefichero="" or nombrefichero="0" then
response.write "Error en el Código "& parametrocoddoc
else
response.write "<script>location=(
'"&application("httpdocumentos")&""&nombrefichero&"');</script>"
end if


function lookUp(Conn, sql1)
dim num, cursor,i,valor
Set cursor=Conn.Execute(sql1)

if Err.Number<>0 then
response.write "<br>Err: " & Err.Description
end if

if (Not cursor.EOF) then
num = cursor.fields.count
ReDim valor(num)
for i=0 to (cursor.fields.count)-1
valor(i)=cursor(i)
next
lookUp=valor
else
ReDim valor(1)
valor(0) = 0
lookUp = valor
end if
cursor.close
end function

%>
 

Leer las respuestas

#1 Matias Iacono
25/06/2004 - 14:22 | Informe spam
Creo que, tal vez, hay un error de conceptos... no se especificamente si te
solucionara el problema, porque nunca lo hice de esta forma.

Preguntas:
El OCX tiene una interfaz?
Muestran algun tipo de pantalla al momento de la ejecucion, desde el
OCX?

Ahora lo otro, cuando vas a trabajar de esta forma, lo ideal es hacer un
DLL, y no un OCX, tienes que tener en cuenta que los OCX trabajan de una
forma un poquito diferente. Piensa en un OCX como otro programa que es
llamado desde un programa especifico. Entones, muchas veces, cuando en un
OCX no se cierran las conexiones a bases de datos como es debido, o queda
haciendo algun proceso, este hara que tu programa no pueda dejar de
funcionar, y muchas veces, no puedas hacerlo correr de nuevo hasta que no lo
detengas a la fuerza.

Como recomendacion, transforma todo lo que tienes en el OCX a un DLL, pero
no solo compilandolo como DLL, si no como proyecto DLL en el VB.

Saludos

"Fernando Uranga" wrote in message
news:
Muy buenas:

A ver si alguien me puede ayudar, porque sigo con mis problemas con mis
ASP's.

Me explico. Tenemos una serie de ASP's que usamos para guardar o mostrar
documentos encapsulados en una base de datos SQL Server. Para ello
usamos un OCX desarrollado por nosotros que tiene funciones a tal fin.
El problema es que siejecutamos algún ASP, la primera vez nos funciona
bien, pero a la segunda (y sucesivas veces), se queda "frito" y no
conseguimos que se ejcute. Es más, si tras esto inteamos ejecutar un ASP
que lo único que haga es Response.Write "Hola mundo" no lo hace. Si
cambiamos los ASP's de directorio virtual todo vuelve a funcionar una
sola vez. Me temo que el problema es del control OCX, pero no se me
ocurre qué puede estar pasando. Vuelvo a enviar el código de uno de los
ASP's a ver si algun alma caritativa me da una idea. Y si no es una
idea, por lo menos un puesto de trabajo, porque como no resuelva esto

Gracias de antemano.

Fernando Uranga

******************* Código ASP ********************************
<%option explicit%>
<%response.expires=0%>
<%response.buffer = false %>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
eOOOOOOO
<form name=Formulario>
<%
Dim Test
,sql,conn,nombrefichero,parametrocoddoc,parametrorevision,parametroversion
dim tdatos,coddoc,revision,version,tdatos1,resultado,fallo


Response.Write "Entro"nombrefichero=""
parametrocoddoc = request("CODDOC")
parametrorevision = request("REVISION")
parametroversion = request("VERSION")



Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open application("Conexion")


fallo = 0

if isnull(parametrocoddoc) or parametrocoddoc="" then
parametrocodoc =""
fallo = 1
end if

if isnull(parametrorevision) or parametrorevision="" then
parametrorevision =""
fallo = 1
end if

if isnull(parametroversion) or parametroversion="" then
parametroversion =""
fallo = 1
end if


if fallo = 0 then
sql = "select coddoc,revision,version from doc where
coddoc='"&parametrocoddoc&"' and revision='" &parametrorevision&"' and
version='"&parametroversion&"'"
tdatos = lookup(conn,sql)
if tdatos(0)<>"0" then
coddoc = tdatos(0)
revision = tdatos(1)
version = tdatos(2)
sql = "select nombre from bdo where coddoc='"&coddoc&"' and
revision='"&revision&"' and version='"&version&"'"
tdatos1 = lookup(conn,sql)
nombrefichero = tdatos1(0)

'response.write "Conexion= "& application("conexion") &
"Coddoc = " & cstr(coddoc) & "Revision = " & cstr(revision) & "Version> " & cstr(version) & "Documento = " &
application("dirdocumentos")&cstr(nombrefichero)

Set Test = Server.CreateObject("Blobsora.UserControl1")
resultado >


Test.ExtraerBDO(application("ConexionOle"),application("BaseDatos"),cstr(cod
doc),cstr(revision),cstr(version),application("dirdocumentos")&cstr(nombrefi
chero),0)
Set Test = Nothing
end if
end if

Conn.close
%>
</form>
</body>
</html>
<%
if nombrefichero="" or nombrefichero="0" then
response.write "Error en el Código "& parametrocoddoc
else
response.write "<script>location=(
'"&application("httpdocumentos")&""&nombrefichero&"');</script>"
end if


function lookUp(Conn, sql1)
dim num, cursor,i,valor
Set cursor=Conn.Execute(sql1)

if Err.Number<>0 then
response.write "<br>Err: " & Err.Description
end if

if (Not cursor.EOF) then
num = cursor.fields.count
ReDim valor(num)
for i=0 to (cursor.fields.count)-1
valor(i)=cursor(i)
next
lookUp=valor
else
ReDim valor(1)
valor(0) = 0
lookUp = valor
end if
cursor.close
end function

%>

Preguntas similares