Foros del Web » Programando para Internet » ASP Clásico »

ayuda error objeto cerrado

Estas en el tema de ayuda error objeto cerrado en el foro de ASP Clásico en Foros del Web. Hola a todos, me gustaria me ayudaran con un error que tengo. Soy nuevo en ASP y no entiendo bien el error. Déjenme les explico. ...
  #1 (permalink)  
Antiguo 13/02/2008, 12:05
 
Fecha de Ingreso: febrero-2008
Mensajes: 16
Antigüedad: 16 años, 4 meses
Puntos: 0
Exclamación ayuda error objeto cerrado

Hola a todos, me gustaria me ayudaran con un error que tengo. Soy nuevo en ASP y no entiendo bien el error. Déjenme les explico.
Tengo que hacer una conexión entre un ASP y una BD pero no he podido. Los asp están en la carpeta wwwroot y la página principal si se muestra. El problema está cuando intento abrir cualquier vínculo. La BD está en MySQL y puedo ver las tablas en el MySQL Administrator. El driver del ODBC está instalado y hace la conexión.
El error que me sale cuando intento abrir cualquier vínculo es

ADODB.Recordset error '800a0e78'
Operation is not allowed when the object is closed.

/control/IT-LIBRARY/FuncionesBD.asp, line 603

El SO es windows server 2003 y el IIS 5.1
Algo que hay que tomar en cuenta es que esta página funcionaba bien pero el server se estropeó. Entonces lo único que tengo que hacer es subir la página otra vez. Es decir, el código está bien, no hay porque cambiarlo. Lo que me hace suponer que el error no es de programación sino de conexión. Pero calro, es por eso que acudo a ustedes.
En verdad deseo me ayuden porque llevo varios días con esto y no'más no queda. Gracias.
  #2 (permalink)  
Antiguo 13/02/2008, 13:53
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: ayuda error objeto cerrado

Necesitaríamos ver la parte del código que está causando el error y el string de conexión.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 13/02/2008, 14:14
 
Fecha de Ingreso: febrero-2008
Mensajes: 16
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: ayuda error objeto cerrado

Gracias goldman por responder, este es el código del archivo donde apunta el error

Function PaginaGridRadio(SQL, Nombre, vDefault, Forma, ItemsPorPagina,OrderField)
Dim Columnas, Registros, TRClass, lsName, CuentaRegistros, lsField, MorePaginas, ToMuchPaginas
Dim puntero
Dim Pagina
Dim Order
Dim FiltraRegistro
Dim Rs
Dim RegistrosInt
Dim RegistrosTot
Dim MyQuery,MyWhere
if not IsEmpty(Request.Form("_ItemsPagina")) Then
ItemsPorPagina=Request.Form("_ItemsPagina")
End if
if IsEmpty(Request.Form("_Pagina")) Then
Pagina="0"
Else
Pagina=Request.Form("_Pagina")
End if
if isEmpty(Request.Form("_Order")) then
Order = OrderField
Else
Order = Request.Form("_Order")
End if
%>
<script language="javascript">
function DoPagina(Pagina){
wShow();
<%=Forma%>._Pagina.value=Pagina;
<%=Forma%>.submit();
}

function Ordena(Columna){
if (<%=Forma%>._Order.value==Columna){
<%=Forma%>._Order.value=Columna+" desc";
} else {
<%=Forma%>._Order.value=Columna;
}
DoPagina('0');
}
</script>
<%
On Error Resume Next
If not isEmpty(Request.Form("_Columnas")) Then
MyWhere=""
For puntero = 1 to Request.Form("_Columnas")-1
If (not isEmpty(Request.Form("_FiltroGrid" & puntero))) and (Trim(Request.Form("_FiltroGrid" & puntero))<>"") then
If MyWhere="" Then
MyWhere = " where " & Request.Form("_NameGrid" & puntero) & " like '%" & Replace(Replace(Trim(Request.Form("_FiltroGrid" & puntero))," ","%"),"'","''") & "%' COLLATE latin1_spanish_ci "
Else
MyWhere = MyWhere & " and " & Request.Form("_NameGrid" & puntero) & " like '%" & Replace(Replace(Trim(Request.Form("_FiltroGrid" & puntero))," ","%"),"'","''") & "%' COLLATE latin1_spanish_ci "
End if
End if
Next
End if
MyQuery="select * from (" & SQL & ") x " & MyWhere & " order by " & Order & " limit " & ItemsPorPagina*(Pagina+5)
set rs=ConsultarSQL(MyQuery)
On Error goto 0
Columnas=rs.Fields.Count
%><input type="hidden" name="_Columnas" value=<%=Columnas%>><%
Registros = 0
TRClass="Dark"
%><tr><%
%><td class="SubEncabezado" align="center"></TD><%
For puntero = 1 to rs.Fields.Count - 1
%><td class="SubEncabezado" align="center"><%
%><input type="text" name="_FiltroGrid<%=puntero%>" value="<%=Request.Form("_FiltroGrid" & puntero)%>" size="7" onChange="javascript:DoPagina('0');"><%
%></td><%
Next
For puntero = 1 to rs.Fields.Count - 1
%><input type="hidden" name="_NameGrid<%=puntero%>" value="<%=rs.Fields(puntero).Name%>" ><%
Next
%></tr><%
%><tr><%
%><td class="SubEncabezado" align="center"></TD><%
For puntero = 1 to rs.Fields.Count - 1
%><td class="SubEncabezado" align="center"><%
%><a href="#" onClick="Ordena('<%=puntero+1%>')"><%
if isnull(rs.Fields(puntero).Name) then
lsName= ""
else
lsName= rs.Fields(puntero).Name
End if
Response.Write lsName
%></a><%
If Order=(puntero+1) & "" then
%>&nbsp;<img src="../images/down.gif" WIDTH="13" HEIGHT="8"><%
End if
If Order=(puntero+1) & " desc" then
%>&nbsp;<img src="../images/up.gif" WIDTH="13" HEIGHT="8"><%
End if
If (not isEmpty(Request.Form("_FiltroGrid" & puntero))) and (Request.Form("_FiltroGrid" & puntero)<>"") then
%>&nbsp;<img src="../images/funnel.gif" WIDTH="16" HEIGHT="15"><%
End if
%></td><%
Next
%></tr><%
For CuentaRegistros=1 to Pagina*ItemsPorPagina
if rs.EOF then
Exit for
end if
FiltraRegistro=True
'For puntero = 0 to rs.Fields.Count - 1
' If (not isEmpty(Request.Form("_FiltroGrid" & puntero))) and (Request.Form("_FiltroGrid" & puntero)<>"") then
' FiltraRegistro = ((instr(1,rs.Fields(puntero),Request.Form("_Filtro Grid" & puntero),vbTextCompare)>0)) and FiltraRegistro
' End if
'Next
If FiltraRegistro Then
Registros=Registros+1
Else
CuentaRegistros=CuentaRegistros-1
End if
rs.MoveNext
next
if rs.EOF then <----- esta es la línea 603
Pagina=0
If not (rs.EOF and rs.BOF) then
rs.MoveFirst
End if
End if

Y esta es la parte del código del archivo global.asa que apunta a la BD

sub Application_OnStart
application("strDSN") ="DSN=AMABDI;user ID=root;Password=ama"
end sub

Por supuesto estos valores son los mismos que el ODBC. En verdad necesito resolver este error, así que si necesitas más información de como está la situasión pídemela. Gracias
  #4 (permalink)  
Antiguo 13/02/2008, 14:17
 
Fecha de Ingreso: octubre-2007
Mensajes: 76
Antigüedad: 16 años, 8 meses
Puntos: 1
De acuerdo Re: ayuda error objeto cerrado

lo que me imagino a primera instancia es que cuando se estropeo el server no todas las cosas quedaron igual. por lo que comentas acerca de que antes funcionaba bien el codigo, entonces puede ser alguna de estas cosas.

*el password ah cambiado
*el usuario ha cambiado
*al server le falta configurar que acepte "retrocesos"(../../) donde esta el archivo FuncionesDB.asp


chekate estas opciones y nos dices
saludos.

p.d. pon el codigo de el archivo funcionesdb.asp
claro que sin el usuario, password e ip :D
  #5 (permalink)  
Antiguo 13/02/2008, 14:35
 
Fecha de Ingreso: octubre-2007
Mensajes: 76
Antigüedad: 16 años, 8 meses
Puntos: 1
De acuerdo Re: ayuda error objeto cerrado

hola de nuevo oye estoy viendo que tienes una funcion llamada ConsultarSQL podrias poner el codigo de esa funcion saludos.
  #6 (permalink)  
Antiguo 13/02/2008, 16:09
 
Fecha de Ingreso: febrero-2008
Mensajes: 16
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: ayuda error objeto cerrado

Gracias Rene por contestar. Con respecto a tus propuestas, el usuario y el psw no han cambiado. sin embargo no entiendo lo de aceptar "retrocesos". Qué es y cómo se hace?
Con respecto a tu segundo comentario, aquí está la función:

Function ConsultarSQL(sqlStr)
Set rs = Server.CreateObject("ADODB.recordset")
on Error resume next
rs.Open sqlStr, gsCnn
CheckForErrors Rs.ActiveConnection,sqlStr
on Error goto 0
set ConsultarSQL = Rs
End Function

Gracias
  #7 (permalink)  
Antiguo 13/02/2008, 17:23
 
Fecha de Ingreso: octubre-2007
Mensajes: 76
Antigüedad: 16 años, 8 meses
Puntos: 1
De acuerdo Re: ayuda error objeto cerrado

que onda oye mil disculpas por no oder segurle con esto pero tan pronto llegue ami casa le sigo echando un vistazo
saludos!!!

y todo se puede en este mundo
  #8 (permalink)  
Antiguo 13/02/2008, 17:26
 
Fecha de Ingreso: febrero-2008
Mensajes: 16
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: ayuda error objeto cerrado

Claro, muchas gracias. Estaré al pendiente porque me interesa mucho. Ya necesito resolverlo
  #9 (permalink)  
Antiguo 13/02/2008, 17:33
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: ayuda error objeto cerrado

..... en que parte activas la conexion o mas bien dicho le das OPEN a "gsCnn" ???
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #10 (permalink)  
Antiguo 13/02/2008, 17:39
 
Fecha de Ingreso: febrero-2008
Mensajes: 16
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: ayuda error objeto cerrado

Gracias Libra. El código empieza de esta forma:

Dim Conn, Rs, RsAux, gsCnn
Set Conn = server.CreateObject("ADODB.Connection")
Set Rs = server.CreateObject("ADODB.Recordset")
Set RsAux = server.CreateObject("ADODB.Recordset")

gsCnn = application("strDSN")

Y lo siguiente está en el global.asa:

sub Application_OnStart
application("strDSN") ="DSN=AMABDI;user ID=root;Password=ama"
end sub
  #11 (permalink)  
Antiguo 13/02/2008, 17:46
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: ayuda error objeto cerrado

bueno en ese sentido, tienes una variable que se llama Conn, pero si te has fijado en tu codigo del primer post, no haces referencia a esa variable que abriria la conexion, es por esto que te da este error de que necesitas el objeto

y aunque gsCnn = application("strDSN"), solo le asignas la cadena de conexion

ahora, deberia ser de esta manera
Cita:
Conn.open gsCnn
y tu funcion
Cita:
Function ConsultarSQL(sqlStr)
Set rs = Server.CreateObject("ADODB.recordset")
on Error resume next
rs.Open sqlStr, Conn
CheckForErrors Rs.ActiveConnection,sqlStr
on Error goto 0
set ConsultarSQL = Rs
End Function
no crees???
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #12 (permalink)  
Antiguo 13/02/2008, 17:57
 
Fecha de Ingreso: febrero-2008
Mensajes: 16
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: ayuda error objeto cerrado

Pues me suena un tanto lógico. Sin embargo cuando pongo

Conn.open gsCnn

me genera el siguiente error:

rror Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
/control/IT-LIBRARY/FuncionesBD.asp, line 8

Que opinas?
  #13 (permalink)  
Antiguo 13/02/2008, 18:04
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: ayuda error objeto cerrado

cambia el factor application, por la cadena directa

Cita:
Conn.open "DSN=AMABDI;user ID=root;Password=ama"
ya que el error indica que no tienes instalado el controlador de conexion a la base, pero hagamos una prueba primeramente
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #14 (permalink)  
Antiguo 13/02/2008, 18:22
 
Fecha de Ingreso: febrero-2008
Mensajes: 16
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: ayuda error objeto cerrado

Pues el código está de la siguiente manera:

Conn.Open gsCnn
gsCnn = Conn.open ([AMABDI], [root], [ama]) ("strDSN")

y me despliega el mismo error:

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
/control/IT-LIBRARY/FuncionesBD.asp, line 8

El código está de esa manera porque si lo ponia como me lo recomendaste anteriormente desplegaba un error de sintaxis.
  #15 (permalink)  
Antiguo 13/02/2008, 18:32
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: ayuda error objeto cerrado

por continuidad del error, creo que tendras que verificar si tu driver esta instalado correctamente y/o si creaste un archivo de conexion, verificar que los datos esten correctamente asignados

__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #16 (permalink)  
Antiguo 14/02/2008, 10:50
 
Fecha de Ingreso: febrero-2008
Mensajes: 16
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: ayuda error objeto cerrado

Pues el driver está bien instalado, de hceho si hace la conexión en la ventana del ODBC. Sin embargo checaré lo del archivo de conexión. Gracias Libra
Por otro lado, ¿Qué siginifica que el objeto está cerrado? Tal vez si entiendo esa parte podria darme una idea un poco más clara
  #17 (permalink)  
Antiguo 14/02/2008, 11:02
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: ayuda error objeto cerrado

cuando tu realizas una conexion a una base de datos, los pasos serian

Cita:
creas el objeto en el servidor
set conexion = server.createobjet("adodb.connection")

despues le asiganas la direccion a la base, abriendo el objeto de esta forma
conexion.OPEN "datos de conexion"

en este sentido, ya puedes crear tus recordset, que usarian esta conexion activa para consultar, agregar... etc

set rs=conexion.execute(sql) <--- como ejemplo
despleigas la info
cierras el recordset al final de la consulta
RS.CLOSE
tambien la conexion se cierra
conexion.CLOSE
eso seria basicamente la secuencia de uso de tus codigos para mostrar y deplegar los resultados... pero...

si antes de crear un recordet.. no asignas la llamada de apertura de la conexion, te marca el error de objeto cerrado como te muestra tu codigo...

Cita:
Function ConsultarSQL(sqlStr)
Set rs = Server.CreateObject("ADODB.recordset")
on Error resume next
rs.Open sqlStr, gsCnn <---- Esta parte
CheckForErrors Rs.ActiveConnection,sqlStr
on Error goto 0
set ConsultarSQL = Rs
End Function
haces mencion a un recordset, pero no tienes una conexion para que surta efecto... por tanto... error

en otras palabras....
quieres prender un carro, sin pila <--- en sentido figurado

creo que hasta yo me confundire si leo mi propio enunciado
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #18 (permalink)  
Antiguo 14/02/2008, 11:11
 
Fecha de Ingreso: febrero-2008
Mensajes: 16
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: ayuda error objeto cerrado

Gracias Libra. Bastante claro. Creo que seguiré por acá hasta que esto quede solucionado
  #19 (permalink)  
Antiguo 14/02/2008, 12:21
 
Fecha de Ingreso: febrero-2008
Mensajes: 16
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: ayuda error objeto cerrado

Escribo este comentario con mucha alegria porque el error ha sido sido solucionado.
El código originalmente estaba de esta forma:

Dim Conn, Rs, RsAux, gsCnn
Set Conn = server.CreateObject("ADODB.Connection")
Set Rs = server.CreateObject("ADODB.Recordset")
Set RsAux = server.CreateObject("ADODB.Recordset")

gsCnn = application("strDSN")

Y cambié la última línea por

Conn.open ="DSN=AMABDI;user ID=root;Password=ama"

Algo aparentemente muy simple y sencillo pero siendo nuevo en esto creo que mi autoestima a subido.
Gracias a todos y a ti Libra, tu ejemplo me ayudó a analizar esa parte del código.

Sin embargo no todo es miel sobre hojuelas. Tengo otro pequeño detalle sin resolver acerca del objeto session, pero creo abriré otro tema para eso. Vientos!!
  #20 (permalink)  
Antiguo 14/02/2008, 12:31
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: ayuda error objeto cerrado

practica y mas practica... solo eso se requiere....
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:06.