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

Error: La consulta es demasiado compleja

Estas en el tema de Error: La consulta es demasiado compleja en el foro de ASP Clásico en Foros del Web. Un saludo: Alguien sabria decirme por qué me da el error mencionado en el titulo del hilo. Los datos a borrar provienen de un listado ...
  #1 (permalink)  
Antiguo 06/02/2006, 07:41
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
Error: La consulta es demasiado compleja

Un saludo:
Alguien sabria decirme por qué me da el error mencionado en el titulo del hilo.

Los datos a borrar provienen de un listado mediante formulario. La cosa es que tiene que borrar dos registros en dos tablas diferentes y las imagenes que lleva asociadas de su carpeta de usuario.
Todo funciona bien borra las imagenes, borra el segundo registro y luego me devuelve ese error al intentar borrar el primer registro.

Les paso el código y les indico la linea del error en rojo para ver si pueden echarme una mano.

Código:
<<A href="mailto:%@LANGUAGE="VBSCRIPT">%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%response.Expires=0
Response.AddHeader "PRAGMA", "NO-CACHE" 
if session("autorizacion")=-1  then 
 response.redirect "../../login.asp"
end if
nombreusuario=request.QueryString("nombreusuario")
autonomia=request.QueryString("autonomia")
%>
<html>
<head>
<title>Desde aqu&iacute; puede borrar las tallas</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>
<link href="../../../hojaestilo.css" rel="stylesheet" type="text/css">
</head>
<body leftmargin="5" topmargin="5" marginwidth="5" marginheight="5">
<!--Incluimos el fichero de constantes-->
<!--#INCLUDE file="../../../adovbs.asp"-->
<%IF (request.form <> "") then 
 'Abrimos la conexion a la tabla hotelesturismo
 set Conn= Server.CreateObject("ADODB.Connection")
 Conn.ConnectionString = "DSN=turofertas.com"
 Conn.open
 Set RS=Server.CreateObject("ADODB.Recordset")
 rs.activeconnection=Conn 
 rs.source="hotelesturismo"
 rs.Locktype = adLockOptimistic
 rs.CursorType = adOpenDinamic
 rs.open
 'Fin codigo conexion a la tabla hotelesturismo
 'Abrimos la conexion a la tabla tarifasturismo
 Set RS2=Server.CreateObject("ADODB.Recordset")
 rs2.activeconnection=Conn 
 rs2.source="tarifasturismo"
 rs2.Locktype = adLockOptimistic
 rs2.CursorType = adOpenDinamic
 rs2.open
 'Fin codigo conexión a la tabla tarifasturismo
 
 
 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("<br><br><div align=""center""><font face= ""Arial, Helvetica, sans-serif"" size=""3"" color=""#FB4C50""><strong>Operación no permitida.<br> Al dejar todos los campos vacios, ha intentado borrar la tabla completa</strong></font></div>")
 END IF
 'Termina el codigo de comprobacion del formulario vacio para no borrar toda la tabla 
 if not vacio then
  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)
  response.write "Filtro rs: " & filtro & "<br>"
  rs.filter= Filtro 
  
  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%>  
  <table width="100%" border="0" cellspacing="0" cellpadding="2">
  <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">Nombre</font></td>
  <td width="8%"><font color="#003399" size="2" face="Arial, Helvetica, sans-serif">Localidad</font></td>
  </tr>
   
  <%response.write ("Se han borrados los siguientes registros <p>")
  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("referenciahotelcasa")%></font></td>
   <td><div align="justify"><font size="2" face="Arial, Helvetica, sans-serif"><%=RS("empresanombrecomercial")%></font></div></td>
   <td><font size="2" face="Arial, Helvetica, sans-serif"><%=RS("localidad")%></font></td>
   </tr>
   <%rs.movenext 
  loop%>
  </table>
    
  <%rs.movefirst
   do while not rs.eof
    '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("imagen")
    if cadenaorigen <> "" then
     cadenabuscar="../../"
     'cadenacambiar="C:\Inetpub\vhosts\turofertas.com\httpdocs\"
     cadenacambiar="E:/obradoiroweb/obradoiroweb/Turofertas/"
     rutaimagenaborrar=replace(cadenaorigen,cadenabuscar,cadenacambiar,1,1,1)
     set FSO=CreateObject("Scripting.FileSystemObject")
     set file=fso.GetFile(rutaimagenaborrar)
     file.delete
    end if
    
    cadenaorigen1=rs("imagen1")
    if cadenaorigen1 <> "" then
     cadenabuscar1="../../"
     'cadenacambiar1="C:\Inetpub\vhosts\turofertas.com\httpdocs\"
     cadenacambiar1="E:/obradoiroweb/obradoiroweb/Turofertas/"
     rutaimagenaborrar1=replace(cadenaorigen1,cadenabuscar1,cadenacambiar1,1,1,1)
     set file=fso.GetFile(rutaimagenaborrar1)
     'response.write file.delete
     file.delete    
    end if
    
    cadenaorigen2=rs("imagencomollegar")
    if cadenaorigen2 <> "" then
     cadenabuscar2="../../"
     'cadenacambiar2="C:\Inetpub\vhosts\turofertas.com\httpdocs\"
     cadenacambiar2="E:/obradoiroweb/obradoiroweb/Turofertas/"
     rutaimagenaborrar2=replace(cadenaorigen2,cadenabuscar2,cadenacambiar2,1,1,1)
     set file=fso.GetFile(rutaimagenaborrar2)
    file.delete   
    end if
    
    cadenaorigen3=rs("descargafolletos")
    if cadenaorigen3 <> "" then
     cadenabuscar3="../../"
     'cadenacambiar3="C:\Inetpub\vhosts\turofertas.com\httpdocs\"
     cadenacambiar3="E:/obradoiroweb/obradoiroweb/Turofertas/"
     rutaimagenaborrar3=replace(cadenaorigen3,cadenabuscar3,cadenacambiar3,1,1,1)
     set file=fso.GetFile(rutaimagenaborrar3)
    file.delete   
    end if
     
    'Este código busca el registro a borrar en la tabla tarifasturismo basandose en el campo referenciahotelcasa
    Sqlstring="referenciahotelcasa=" & "'" &rs("referenciahotelcasa")& "'"
    rs2.filter=Sqlstring
    'rs2.movefirst
     'do while not rs2.eof
      rs2.delete
      'rs2.movefirst
     'loop
    'Acaba aquí el codigo de borrado del registro en la tabla tarifasturismo
     
    'Borramos el registro seleccionado en el formulario de borrar registros
    rs.delete
    'Borra siempre el primer registro del filtro
    'rs.movefirst
    rs.movenext
   loop
  end if
 end if%>
 
 <br>
 <br>
 <A HREF="../../../modulo_gestion.asp?nombreusuario=<%=nombreusuario%>" target="_parent">Menu principal </A> ** <A HREF="borrar_turismo.asp?nombreusuario=<%=nombreusuario%>" target="_parent">Borrar Oferta</A> 
 <%
 rs.close
 rs2.close
 Conn.close
 %>
 <%ELSE
 set Conn1= Server.CreateObject("ADODB.Connection") 
 Set rs1=Server.CreateObject("ADODB.Recordset")
 Conn1.ConnectionString = "DSN=turofertas.com"
 Sqlstring="select empresanombrefiscal from clientes where nombreusuario=" & "'" &nombreusuario& "'"
 Conn1.open
 Set rs1 = Conn1.execute (sqlstring)
 %>
  
 Rellene el campo por el cual desea realizar la búsqueda </p>
 <form name="form1" method="post" action="borrar_turismo.asp?nombreusuario=<%=nombreusuario%>">
   <table width="100%">
      <tr>
        <td width="13%" class="CELDA">Referencia</td>
        <td width="87%"><input name="referenciahotelcasa" type="text" class="CAJASDETEXTO" id="referenciahotelcasa" tabindex="1" size="10" maxlength="10"></td>
      </tr>
      <tr>
        <td class="CELDA">Nombre Fiscal</td>
        <td><input name="empresanombrefiscal" type="text" class="CAJASDETEXTO" id="empresanombrefiscal" onFocus="blur()" value="<%=rs1("empresanombrefiscal")%>" size="35" maxlength="35"></td>
      </tr>
      <tr>
        <td class="CELDA">Nombre Comercial</td>
        <td><input name="empresanombrecomercial" type="text" class="CAJASDETEXTO" id="empresanombrecomercial" tabindex="2" size="35" maxlength="35"></td>
      </tr>
      <tr>
        <td class="CELDA">Localidad</td>
        <td><input name="localidad" type="text" class="CAJASDETEXTO" id="localidad" size="35" maxlength="35"></td>
      </tr>
      
      <tr>
        <td class="CELDA">Provincia</td>
        <td>
          <input name="provincia" type="text" class="CAJASDETEXTO" id="provincia" size="22" maxlength="22">        </td>
      </tr>
      <tr>
        <td><font face="Arial, Helvetica, sans-serif"><a href="../../../modulo_gestion.asp?nombreusuario=<%=nombreusuario%>"><font size="2">Men&uacute; Principal</font></a></font> </td>
        <td><input type="submit" class="BOTONES_FORMULARIO" value="Borrar Casa Turismo Rural">
        <input name="reset" type="reset" class="BOTONES_FORMULARIO" value="Limpiar Formulario"></td>
      </tr>
    </table>
 </form>
  <p>
    <%rs1.close
  Conn1.close
END IF%>
</p>
</body>
</html>
__________________

Espero haber aprendido algo de tí.
A mi padre.
  #2 (permalink)  
Antiguo 07/02/2006, 04:17
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
por favor, ayuda.................
no consigo saber qué es lo que pasa
__________________

Espero haber aprendido algo de tí.
A mi padre.
  #3 (permalink)  
Antiguo 07/02/2006, 05:08
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
MI consejo es que no uses aperturas dinámicas de tablas (incluso con Access). Que lo hagas todo por SQL (incluso con parametros). La razón es que suelen producirse bloqueos de páginas (no de registros).

Yo prefiero leer la tabla y cerrarla inmediatamente. Para leer:

Set rs = conn.execute("SELECT ....")

para modificar, insertar y borrar:

conn.execute("DELETE FROM .... WHERE....")


Sin embargo, tiene toda la pinta que el problema lo tienes en los filtros que aplicas. Si puedes, te recomiendo que trabajes con SQL. Si quieres, puedo echarte una mano a migrarlo pero deberá ser esta tarde ( o dentro de 5 horas).


Un saludo
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 00:15.