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

Problema: El Recordset actual no admite actualizaciones

Estas en el tema de Problema: El Recordset actual no admite actualizaciones en el foro de ASP Clásico en Foros del Web. Saludos: Tengo aquí un código que me está dando un problema a ver si ustedes pueden ayudarme con él porque ya llevo 7 horas encima ...
  #1 (permalink)  
Antiguo 01/11/2004, 15:36
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
Problema: El Recordset actual no admite actualizaciones

Saludos:
Tengo aquí un código que me está dando un problema a ver si ustedes pueden ayudarme con él porque ya llevo 7 horas encima y no he encontrado la solución.

La cosa es un poco complicada, pero a ver si me explico:

La selección de los registros a borrar se hace con la propiedad rs.filter que viene de un formulario por el que los usuarios van discriminando los registros que se borraràn más tarde.

El asunto es que además de borrar el conjunto de registros arriba mencionado debe borrar el resto de los registros donde el campo imagenofertareferida es igual al contenido del campo imagenoferta (para esto uso el rs2) que proviene de la criba anterior.
Además debe borrar también las imágenes de las diferentes ofertas, pero aquí no hay problema.

Ya he conseguido que liste bien todo lo que tiene que borrar pero a la hora de borrarlo me devuelve el error siguiente y la línea donde da el error es la que marco en rojo.

Espero que me entiendan y puedan echarme una mano.



ADODB.Recordseterror '800a0cb3'

El Recordset actual no admite actualizaciones. Puede ser una limitación del proveedor o del tipo de bloqueo seleccionado. /gestion_mayoristas/ofertas/borrar/borrar_ofertas_mayoristas.asp, line 149


Código:
 
<file:///C|/obradoiroweb/obradoiroweb/images/frame_izqda_con_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

 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

  'Abrimos el recordset RS2
  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
  %>

<table width="100%" border="0" cellspacing="0" cellpadding="1">
	 <tr bgcolor="#e0e0e0"> 
	 <td width="17%"> <div align="left"><font color="#003399" size="2" face="Arial, Helvetica, sans-serif">Referencia</font></div></td>
	 <td width="33%"><font color="#003399" size="2" face="Arial, Helvetica, sans-serif">Denominación</font></td>
	 <td width="8%"><font color="#003399" size="2" face="Arial, Helvetica, sans-serif">Empresa</font></td>
	 <td width="13%"><font color="#003399" size="2" face="Arial, Helvetica, sans-serif">Imagen</font></td>
	 <td width="16%"><font color="#003399" size="2" face="Arial, Helvetica, sans-serif">Publicación</font></td>
	 <td width="13%"><font color="#003399" size="2" face="Arial, Helvetica, sans-serif">Validez</font></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
	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><font size="2" face="Arial, Helvetica, sans-serif"><%=RS("referenciaoferta")%></font></td>
	 <td><div align="justify"><font size="2" face="Arial, Helvetica, sans-serif"><%=RS("denominacionoferta")%></font></div></td>
	 <td><font size="2" face="Arial, Helvetica, sans-serif"><%=RS("empresaoferta")%></font></td>
	 <td><font size="2" face="Arial, Helvetica, sans-serif"><%CortarNombreFichero%></font></td>
		<td><font size="2" face="Arial, Helvetica, sans-serif"><%=RS("fechapublicacionoferta")%></font></td>
		<td><font size="2" face="Arial, Helvetica, sans-serif"><%=RS("fechavalidezoferta")%></font></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

	'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>"
	Set RS2= conn2.execute (sqlstring2)
	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>
 <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="Africa">&Aacute;frica</option>
		   <option value="America">Am&eacute;rica</option>
		   <option value="Canarias">Canarias</option>
		   <option value="Caribe">Caribe</option>
		   <option value="Cruceros">Cruceros</option>
		   <option value="Europa">Europa</option>
		   <option value="Ferias">Ferias</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>
Muchas gracias a todos
  #2 (permalink)  
Antiguo 01/11/2004, 15:45
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Bueno, me parece que por default, el método execute asigna un bloqueo distinto a alguno que te permita hacer modificaciones, cambia la forma de abrir el recordset


RS2.Open sqlstring2, Conn2, 3, 3
'rs2.movefirst esta no es necesaria

if not rs2.bof and not rs2.eof then
rs2.movefirst
do while not rs2.eof
.
.
.

Trata así...

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 01/11/2004, 16:11
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
Ya funcionó.
Yo había probado con rs.locktype y rs.cursortype pero nada.
Muchas gracias, pense que ya no salia de ahí
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 13:35.