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

ERROR: La operación no está permitida si el objeto está cerrado (ayuda porfavor)

Estas en el tema de ERROR: La operación no está permitida si el objeto está cerrado (ayuda porfavor) en el foro de ASP Clásico en Foros del Web. Amigos: Tengo el sgte problema, estoy trabajando con una pagina ASP y con BD MysqlServer, el problema es que cuando hago el if (if rs.eof ...
  #1 (permalink)  
Antiguo 18/02/2010, 08:17
 
Fecha de Ingreso: febrero-2010
Mensajes: 16
Antigüedad: 14 años, 2 meses
Puntos: 0
ERROR: La operación no está permitida si el objeto está cerrado (ayuda porfavor)

Amigos:

Tengo el sgte problema, estoy trabajando con una pagina ASP y con BD MysqlServer, el problema es que cuando hago el if (if rs.eof then) me lanza este error.

ERROR: La operación no está permitida si el objeto está cerrado


aca tengo el codigo
Código:
'busco si el prodcuto ya esta ingresado
				sql=" sp_tvn_cot_det_proveedor"
				sql=sql & " 'SEL_DET_PROVEEDOR'," '@viTipo as varchar(50),
				sql=sql & "'"& vIdCot &"'," '@id_cot as bigint,
				sql=sql & "'"& vId &"'," '@id_prvr as bigint,
				sql=sql & "'"& vCodFam &"'," '@id_fam as bigint,
				sql=sql & "'"& vCodProd &"'," '@id_prod as bigint,
				sql=sql & "'"& vNroItem &"'," '@id_item_det as	bigint,
				sql=sql & "'"& 1 &"'" '@estado as bigint
				response.write(sql)
				'response.end()
				set rs = nothing
				set rs = cn.Execute(sql)
				
				'si el proovedor existe lo borro (ESTA eliminacion se hace conn el fin de no tener datos basuras en la BD)
				
         if not rs.eof then   -----------------------------> ACA EL ERROR

				sql=" sp_tvn_cot_det_proveedor"
				sql=sql & " 'SEL_DET_PROVEEDOR'," '@viTipo as varchar(50),
						sql=sql & "'"& vIdCot &"'," '@id_cot as bigint,
						sql=sql & "'"& vId &"'," '@id_prvr as bigint,
						sql=sql & "'"& vCodFam &"'," '@id_fam as bigint,
						sql=sql & "'"& vCodProd &"'," '@id_prod as bigint,
						sql=sql & "'"& vNroItem &"'," '@id_item_det as	bigint,
						sql=sql & "'"& 1 &"'" '@estado as bigint
				end if
la cosa es que yo se que se produce, porque no trae ningun valor ese procedimiento (es un select con varias condiciones) (lo e probado en forma independiente y no me tira ningun valor, solo me dice q la operacion fue completada en forma satisfactoria.)

entonces para q sirve el if.eof si cuando no encuentro valores asociados a esas condiciones se cae la pagina?

mi pregunta entonces es, como hago para que al hacer el select y sabiendo q no me rescatara resultados ese SP, logre solucionar este error??

hay q cambiar algo en el procedimiento??

PD: la conexion y la declaracion de los recordset esta bien ya que lo e usado muchas veces, para cualquier tipo de consulta

gracias de antemano

SALUDOS::

Última edición por jpmaiden; 18/02/2010 a las 08:37
  #2 (permalink)  
Antiguo 18/02/2010, 08:40
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 3 meses
Puntos: 57
Respuesta: ERROR: La operación no está permitida si el objeto está cerrado (ayuda por

trata cambiando esto
Código ASP:
Ver original
  1. set rs = cn.Execute(sql)
por esto
Código ASP:
Ver original
  1. set rs = server.createobject ("adodb.recordset")
  2. rs.open sql, cn
  #3 (permalink)  
Antiguo 18/02/2010, 08:55
 
Fecha de Ingreso: febrero-2010
Mensajes: 16
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: ERROR: La operación no está permitida si el objeto está cerrado (ayuda por

gracias por responder posman, pero sigo con ese error, la declaración del RS la hago en un asp que se llama conexion.asp, es donde establezco los datos de la conexión defino los recordset.

a mi me parece que el problema va mas por el hecho de que no me de ninguna respuesta ese select que estoy llamado.

si alguien me podría ayudar se lo agradecería mucho

PD: no me dio resultado lo que tu pusiste

SALUDOS::
  #4 (permalink)  
Antiguo 18/02/2010, 11:14
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 3 meses
Puntos: 146
Respuesta: ERROR: La operación no está permitida si el objeto está cerrado (ayuda por

Cita:
PD: la conexion y la declaracion de los recordset esta bien ya que lo e usado muchas veces, para cualquier tipo de consulta
El problema no lo puedes resolver a simple vista por que estas trabajando con creación de objetos implícita y no tienes control sobre lo que obtienes

Dices que declaras el recordSet en otro lado, más sin embargo lo destruyes con la linea set rs = nothing justo antes de ejecutar el procedimiento, lo ejecutas utilizando el método Execute y apegándote a que, de haber una ejecución exitosa que regrese un cursor de datos, se cree implícitamente un objeto RecordSet, en este caso no sucedió así, ese SP no generó un recordSet y no se creó un objeto, por eso mismo el método .EOF hace tronar el programa.

Yo revisaría ese procedimiento almacenado y cambiaría la escritura de la página para hacerlo más claro. Puedes validar si se creo un objeto con la instrucción IsObject antes de tratar de invocarlo.

saludos

Etiquetas: objeto
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 02:43.