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

La operación no está permitida si el objeto está abierto.

Estas en el tema de La operación no está permitida si el objeto está abierto. en el foro de ASP Clásico en Foros del Web. Saludos: A ver si me pueden echar una mano con este código. Lo que debe hacer es lo siguiente: Cuando un mayorista borra sus ofertas ...
  #1 (permalink)  
Antiguo 02/11/2004, 13:26
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
La operación no está permitida si el objeto está abierto.

Saludos:
A ver si me pueden echar una mano con este código.
Lo que debe hacer es lo siguiente: Cuando un mayorista borra sus ofertas debe borrar además todas las ofertas de los minoristas que tengan como referencia alguna de las ofertas que el mayorista está eliminando.
El código hace bien su trabajo excepto cuando le mando borrar más de una oferta de un mayorista o bien todas las que tenga un mayorista, haciendo exactamente lo siguiente:
Busca el primer registro del mayorista a borrar y para esa oferta todas las relacionadas de los minoristas y cuando tiene que localizar la segunda oferta del mayorista es cuando casca y me da el siguiente error.




--------------

ADODB.Recordseterror '800a0e79'

La operación no está permitida si el objeto está abierto. /gestion_mayoristas/ofertas/borrar/borrar_ofertas_mayoristas.asp, line 165
--------------
Les dejo el código y les marco la línea del error en rojo:

Código:
 nombreusuario=request.QueryString("nombreusuario")%> 
<html>
<head>
</head>
<body background="file:///C|/obradoiroweb/obradoiroweb...n_opacidad.jpg" leftmargin="5" topmargin="5" marginwidth="5" marginheight="5">
<!--Incluimos el fichero de constantes-->
<!--#INCLUDE file="../../../adovbs.asp"-->
<%
IF (request.form <> "") THEN
 'Para conexión a dsn arsys con ACCESS
 set Conn= Server.CreateObject("ADODB.Connection")
 Conn.ConnectionString = "DSN=clubviajesoferta.com.turofertas"
 Conn.open
 Set RS=Server.CreateObject("ADODB.Recordset")
 rs.activeconnection=Conn 
 rs.source="ofertasmayoristas"
 rs.Locktype = adLockOptimistic
 rs.CursorType = adOpenDinamic
 rs.open
 'Termina aquí la conexion a dsn arsys con ACCESS
 function CortarNombreFichero
  imagen=rs("imagenoferta")
  len(imagen)
  posicioncaracterbuscar=instrrev(imagen,"/")+1
  response.write mid(imagen,posicioncaracterbuscar)
 end function
 Poner_AND= False
 'El Codigo siguiente hace que si el formulario se envia vacio no se borre toda la tabla
 Vacio=true
 For each parametro in request.form 
  parametro = Lcase(parametro)
  if request.form(parametro) <> "" then
   vacio = false   
   exit for
  end if 
 next
 if vacio=true then
  response.write "Operación no permitida.<br> Al dejar todos los campos vacios, ha intentado borrar la tabla completa"
 end if
 if not vacio then
  'Termina el codigo de comprobacion del formulario vacio para no borrar toda la tabla
  Filtro= ""
   FOR EACH Parametro IN Request.Form
   IF Request.Form (Parametro) <> "" THEN
	IF Poner_AND THEN
	 Filtro= Filtro & " AND " & Parametro & "='"
	 Filtro= Filtro & Request.Form(Parametro) & "'"
	ELSE
	 Filtro= Filtro & Parametro & "='"
	 Filtro= Filtro & Request.Form(Parametro) & "'"
	 Poner_AND = True
	END IF
   END IF 
  NEXT
  Filtro=Lcase(filtro)
  rs.filter= Filtro
  response.write "el filtro es: " & filtro%>
  <table width="100%" border="0" cellspacing="0" cellpadding="1">
	 <tr bgcolor="#e0e0e0"> 
	 <td width="17%"> <div align="left">Referenciadiv></td>
	 <td width="33%">Denominación</td>
	 <td width="8%">Empresa</td>
	 <td width="13%">Imagen</td>
	 <td width="16%">Publicación</td>
	 <td width="13%">Validez</td>
	 </tr>
  
  <%if rs.bof and rs.eof then
	response.write("<br><br><div align=""center""><font face= ""Arial, Helvetica, sans-serif"" size=""3"" color=""#FB4C50""><strong>No se encontraron coincidencias con la búsqueda solicitada </strong></font></div>")
	else
	'Abrimos el recordset RS2 para listar los registros del minorista que se van a borrar
	set Conn2= Server.CreateObject("ADODB.Connection") 
	Set RS2=Server.CreateObject("ADODB.Recordset")
	Conn2.ConnectionString = "DSN=clubviajesoferta.com.turofertas"
	sqlstring2="select * from ofertasmayoristas where imagenofertareferida=" & "'" & rs("imagenoferta") & "'"
	Conn2.open
	
	'Abrimos el recordset RS3 para listar las fotos de los minoristas que se van a borrar
	set Conn3= Server.CreateObject("ADODB.Connection") 
	Set RS3=Server.CreateObject("ADODB.Recordset")
	Conn3.ConnectionString = "DSN=clubviajesoferta.com.turofertas"
	sqlstring3="select * from ofertasmayoristas where imagenofertareferida=" & "'" & rs("imagenoferta") & "'" & "and nombreusuario='" &nombreusuario& "'"
	Conn3.open
	
	response.write ("Se han borrados las siguientes ofertas: <p> borrarofertasmayoristas.asp")
	rs.movefirst
	do while not rs.eof
	 if colorfila=0 then
		color="#EEF0F7"
	  colorfila=1
	 else
	  color="FFFFFF"
	  colorfila=0
	 end if%>
	 <tr valign="top" bgcolor="<%=color%>"> 
	 <td><%=RS("referenciaoferta")%></td>
	 <td><div align="justify"><%=RS("denominacionoferta")%></div></td>
	 <td><%=RS("empresaoferta")%></td>
	 <td><%CortarNombreFichero%></td>
		<td><%=RS("fechapublicacionoferta")%></td>
		<td><%=RS("fechavalidezoferta")%></td>
	 </tr>
	 <%rs.movenext
	loop%>
   </table>
   <%rs.movefirst
   'Construimos la ruta y el nombre del fichero que se va a borrar del servidor y 
   'que previamente escogimos mediante el formulario de borrar registros
   cadenaorigen=rs("imagenoferta")
   cadenabuscar="../../"
   cadenacambiar="c:/obradoiroweb/obradoiroweb/Turofertas/"
   rutaimagenaborrar=replace(cadenaorigen,cadenabuscar,cadenacambiar,1,1,1)
   set FSO=CreateObject("Scripting.FileSystemObject")
   set file=fso.GetFile(rutaimagenaborrar)
   file.delete
	  
   'Abrimos el recordset RS3
   RS3.Open sqlstring2, Conn3, 3, 3
   rs3.movefirst
	   
   'Construimos la ruta y el nombre del fichero que se va a borrar del servidor  
   'que pertenece a los registros de los minoristas
   cadenaorigen1=rs3("imagenoferta")
   cadenabuscar1="../../"
   cadenacambiar1="c:/obradoiroweb/obradoiroweb/Turofertas/"
   rutaimagenaborrar1=replace(cadenaorigen1,cadenabuscar1,cadenacambiar1,1,1,1)
   response.write "<br>el fichero del minorista a borrar es: " & rutaimagenaborrar1
   set FSO=CreateObject("Scripting.FileSystemObject")
   set file=fso.GetFile(rutaimagenaborrar1)
   file.delete
   'Este código borrar los registros de los minoristas que tienen ofertas referidas
   do while not rs.eof
	response.write "<br>Con la orden: <br> " & sqlstring2 & "<br> se borraran los registros de los minoristas:<br>"
	
	'Abrimos el recordset RS2
	RS2.Open sqlstring2, Conn2, 3, 3
	rs2.movefirst
	
	if not rs2.bof and not rs2.eof then
	 rs2.movefirst
	 do while not rs2.eof
	  response.write RS2("referenciaoferta") & "<br>"
	  rs2.delete
	  rs2.movenext 
	 loop
	end if
   
	'Borramos el registro seleccionado en el formulario de borrar registros
	rs.delete
	
	'Borra siempre el primer registro del filtro
	rs.movefirst
   loop
  end if
 end if%>
 <br>
 <br>
 <A HREF="../../../modulo_gestion.asp?nombreusuario=<%=nombreusuario%>" target="_parent">Menu principal </A> ** <A HREF="borrar_ofertas.asp?nombreusuario=<%=nombreusuario%>" target="_parent">Borrar Oferta</A> 
 <%
 rs.close
 Conn.close
ELSE
   set Conn1= Server.CreateObject("ADODB.Connection") 
 Set RS1=Server.CreateObject("ADODB.Recordset")
 Conn1.ConnectionString = "DSN=clubviajesoferta.com.turofertas"
 sqlstring="select empresanombrefiscal from clientes where nombreusuario=" & "'" &nombreusuario& "'"
 Conn1.open
 Set RS1 = conn1.execute (sqlstring)
 
 response.write "La empresa es: " & categoria = rs1("empresanombrefiscal")
 %>  
   Rellene el campo por el cual desea realizar la búsqueda </p>
   <form name="form1" method="post" action="borrar_ofertas_mayoristas.asp?nombreusuario=<%=nombreusuario%>">
	 <table width="100%"  border="0" cellpadding="0" cellspacing="0">
	   <tr>
		 <td width="23%">Referencia</td>
		 <td colspan="3"><input name="referenciaoferta" type="text" id="referenciaoferta" size="20" maxlength="20"></td>
	   </tr>
	   <tr>
		 <td>Denominaci&oacute;n</td>
		 <td colspan="3"><input name="denominacionoferta" type="text" id="denominacionoferta" size="11" maxlength="11"></td>
	   </tr>
	   <tr>
		 <td>Destino</td>
		 <td colspan="3"><select name="destinooferta" id="destinooferta">
		   <option value="""" selected>Seleccione un destino</option>
		   <option value="2 x 1 Ofertas">2 x 1 Ofertas</option>
		   <option value="&Aacute;frica">&Aacute;frica</option>
		   <option value="Canarias">Canarias</option>
		   <option value="Caribe">Caribe</option>
		   </select></td>
	   </tr>
	   <tr>
		 <td>Empresa</td>
		 <td colspan="3"><input name="empresaoferta" type="text"  onfocus="blur()" id="empresaoferta" value="<%=rs1("empresanombrefiscal")%>" size="35" maxlength="35"></td>
	   </tr>
	   <tr>
		 <td>Fecha Publicaci&oacute;n</td>
		 <td width="13%"><input name="fechapublicacionoferta" type="text" id="fechapublicacionoferta" size="10" maxlength="10"></td>
		 <td width="4%"><img src="../../../images/iconos/ayuda.gif" width="16" height="20"></td>
		 <td width="60%"><font size="2" face="Arial, Helvetica, sans-serif">DD/MM/AAAA</font></td>
	   </tr>
	   <tr>
		 <td>Fecha Validez</td>
		 <td><input name="fechavalidezoferta" type="text" id="fechavalidezoferta" size="10" maxlength="10">		   </td>
		 <td><img src="../../../images/iconos/ayuda.gif" width="16" height="20"></td>
		 <td><font size="2" face="Arial, Helvetica, sans-serif">DD/MM/AAAA</font></td>
	   </tr>
	   <tr>
		 <td>&nbsp;</td>
		 <td colspan="3"><input type="submit" value="Borrar Oferta" onClick="return window.confirm('Eliminar el/los registro/s')">
			 <input type="reset" value="Limpiar Formulario"></td>
	   </tr>
	 </table>
</form>
<%END IF%>
</body>
</html>
Gracias por todo de antemano.
  #2 (permalink)  
Antiguo 02/11/2004, 13:29
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
mm.. ver todo tu código ni le entiendo, soy honesto. Mi consejo :

verifica que si usas el ob_rs("alguncampo") lo cierres antes de realizar lo mismo.

Ejemplo:

do while not ob_rs.eof
'recorrer
ob_rs.movenext
loop

'SI NO LO CIERRAS MARCA ERROR
ob_rs.close

do while not ob_rs.eof
'recorrer
ob_rs.movenext
loop

Última edición por orharo2003; 02/11/2004 a las 13:30
  #3 (permalink)  
Antiguo 09/11/2004, 14:56
 
Fecha de Ingreso: noviembre-2004
Mensajes: 31
Antigüedad: 19 años, 7 meses
Puntos: 0
hola gente... recupero este post para ver si me pueden dar una mano. cuando quiero ver un .asp me tira el mismo error que a esta persona.

creo que el codigo asp esta bien, pero mis conocimientos son mas bien escasos... aca esta:

Código:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
	Dim DB
	Set DB = Server.CreateObject ("ADODB.Connection")
	DB.Open ("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="&"../../inetpub/wwwroot/v3/dbs/aereos.mdb")
	DB.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" + DB + ";"
	Dim RS
	Set RS = Server.CreateObject ("ADODB.Recordset")
	Dim Consulta
%>
<h1>Region: <% 'TOMAR LOS DATOS DE LOS COOKIES %></h1>
<% 
	Consulta = "SELECT aereos.id, aeropuertos.ciudad AS origen, aeropuertos_1.ciudad AS destino, aeropuertos_2.ciudad AS escala1, aeropuertos_3.ciudad AS escala2, aereos.tarifa, aereos.impuestos, aereos.comentarios FROM (((aereos INNER JOIN aeropuertos ON aereos.origen = aeropuertos.id) INNER JOIN aeropuertos AS aeropuertos_1 ON aereos.destino = aeropuertos_1.id) INNER JOIN aeropuertos AS aeropuertos_2 ON aereos.escala1 = aeropuertos_2.id) INNER JOIN aeropuertos AS aeropuertos_3 ON aereos.escala2 = aeropuertos_3.id;"
	RS.Open Consulta, DB
		
	If RS.EOF And RS.BOF Then
		Response.Write "No hay ningún dato en la sección seleccionada."
	Else
		RS.MoveFirst
		While Not RS.EOF
			Response.Write RS.Fields ("origen")
			Response.Write RS.Fields ("destino")
			Response.Write RS.Fields ("escala1")
			Response.Write RS.Fields ("escala2")
			Response.Write RS.Fields ("escala3")
			Response.Write "<HR>"
			RS.MoveNext
		Wend
	End If
	
	RS.Close()
	Set RS = Nothing
	
	%>
mil gracias desde ya....................... (el xq de la consulta sql que estoy queriendo hacer esta aca......... http://www.forosdelweb.com/f21/ayuda-consulta-sql-244046/)


(no hay html xq es un include de otra pagina, igual IE debe dibujarlo bien)/

Última edición por ponzonik; 09/11/2004 a las 15:00
  #4 (permalink)  
Antiguo 09/11/2004, 20:47
Avatar de univercity  
Fecha de Ingreso: noviembre-2002
Mensajes: 681
Antigüedad: 21 años, 7 meses
Puntos: 0
Para Ciberpata,
Creo que tu error esta en esto...

'Abrimos el recordset RS3
RS3.Open sqlstring2, Conn3, 3, 3
rs3.movefirst

'Construimos la ruta y el nombre del fichero que se va a borrar del servidor
'que pertenece a los registros de los minoristas
cadenaorigen1=rs3("imagenoferta")
cadenabuscar1="../../"
cadenacambiar1="c:/obradoiroweb/obradoiroweb/Turofertas/"
rutaimagenaborrar1=replace(cadenaorigen1,cadenabus car1,cadenacambiar1,1,1,1)
response.write "<br>el fichero del minorista a borrar es: " & rutaimagenaborrar1
set FSO=CreateObject("Scripting.FileSystemObject")
set file=fso.GetFile(rutaimagenaborrar1)
file.delete
'Este código borrar los registros de los minoristas que tienen ofertas referidas
do while not rs.eof
response.write "<br>Con la orden: <br> " & sqlstring2 & "<br> se borraran los registros de los minoristas:<br>"

'Abrimos el recordset RS2
RS2.Open sqlstring2, Conn2, 3, 3
rs2.movefirst


Fijate que abres el Record 3 y la consulta sqlstring2 y luego donde te marca el error... CLARO SI ESA CONSULTA YA LA TIENES ABIERTA UN POCO MAS ARRIBA!!!!

Solucion : obvio me imagino que ya te distes cuenta, bueno es solo cambiar ese 2 por un 3, creo que eso es..

Slds.
__________________
"Lo importante es nunca dejar de hacerse preguntas"
Albert Einstein

Última edición por univercity; 09/11/2004 a las 20:50
  #5 (permalink)  
Antiguo 09/11/2004, 21:01
Avatar de univercity  
Fecha de Ingreso: noviembre-2002
Mensajes: 681
Antigüedad: 21 años, 7 meses
Puntos: 0
POnzonik, Donde te marca el error????


solo por ver que pasa cierra el Recorset antes del condicional...

Wend
Rs.Close
Set Rs = Nothing
End IF

no se si va a yudar de algo pero prueba a ver que pasa y si no dí donde marca el error...
__________________
"Lo importante es nunca dejar de hacerse preguntas"
Albert Einstein
  #6 (permalink)  
Antiguo 12/11/2004, 11:10
 
Fecha de Ingreso: noviembre-2004
Mensajes: 31
Antigüedad: 19 años, 7 meses
Puntos: 0
Cita:
Iniciado por univercity
ponzonik, Donde te marca el error????


solo por ver que pasa cierra el Recorset antes del condicional...

Wend
Rs.Close
Set Rs = Nothing
End IF

no se si va a yudar de algo pero prueba a ver que pasa y si no dí donde marca el error...
el error es un error 500 cuando quiero ver el asp con el navegador...
Cita:
No se puede mostrar la página
Hay un problema con la página que está intentando ver y no se puede mostrar.

Please try the following:
Haga clic en el botón Actualizar o inténtelo de nuevo más tarde.

Abra la página principal de localhost y, a continuación, busque vínculos a la información que desea.
HTTP 500.100. Error interno del servidor: error de ASP
Servicios de Internet Information Server

Información técnica (para personal de soporte técnico)
Tipo de error:
ADODB.Connection (0x800A0E79)
La operación no está permitida si el objeto está abierto.
/v3/aereos.asp, línea 6


Tipo de explorador:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.50 [en]

Página:
GET /v3/aereos.asp

Hora:
Viernes, 12 de Noviembre de 2004, 02:10:49 p.m.

Más información:
Soporte técnico de Microsoft
por otro lado, probé lo que me sugeriste y no hubo ningún cambio....... gracias desde ya.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 16:39.