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

No para cualquiera, la sql dinamica se me va

Estas en el tema de No para cualquiera, la sql dinamica se me va en el foro de ASP Clásico en Foros del Web. Hola compañeros, resulta que tengo un formulario con 3 combos donde puedes escoger unos criterios de busqueda en una base de datos. El caso es ...
  #1 (permalink)  
Antiguo 30/03/2004, 12:01
 
Fecha de Ingreso: marzo-2004
Ubicación: Sevilla, España
Mensajes: 131
Antigüedad: 20 años, 2 meses
Puntos: 1
No para cualquiera, la sql dinamica se me va

Hola compañeros, resulta que tengo un formulario con 3 combos donde puedes escoger unos criterios de busqueda en una base de datos. El caso es que al poner los criterios y pulsar sobre "Buscar", todo vparece ir bien pero lo que ocurre es que si por ejemplo pagina resultante tiene dos hipervinculos porque todos los registros no caben en una paagina (rs.pagesize=5) , pues resulta que al pinchar sobre el hipervinculo para ir a la pagina 2, se va la sql dinamica y me aparecen todos los registros de la base de datos en 4 paginas. La primera vez se forma bien la sql dinamica, pero despues ya desaparece y se pone en forma generica. Os adjunto el codigo por si alguien quiere probarlo, y muchas gracias de antemano:

<html>
<head>
<title>PAGINA PRINCIPAL DE INFOTRABAJO.ES</TITLE>
</head>
<BODY background="" bgColor=lightsteelblue>
<center><h2>Infotrabajo.es Tu portal del trabajo</h2></center>

<table>
<tr>
<td>
<table>
<tr><td><IMG style="WIDTH: 126px; HEIGHT: 95px" height=499 src="monet_99.jpeg" width=382></td> </tr>
</table>
</td>

<td>
<form name="Formulario" action="paginaprincipal.asp" method="post">
<table>
<TBODY>
<tr><td>Categoria:</td><td>
<SELECT NAME="CAT">
<OPTION SELECTED>TODAS
<OPTION VALUE="INFORMATICA">INFORMATICA
<OPTION VALUE="VENTAS">VENTAS
<OPTION VALUE="ALMACEN">ALMACEN
<OPTION VALUE="ADMINISTRACION">ADMINISTRACION
<OPTION VALUE="DISEÑO">DISEÑO</OPTION>
</SELECT>
</td></tr><br>
<tr><td>Provincia:</td><td>
<SELECT NAME="PROV">
<OPTION selected>TODAS
<OPTION value="ALAVA">ALAVA
<OPTION value="ALMERIA">ALMERIA
<OPTION value="BADAJOZ">BADAJOZ
<OPTION value="BARCELONA">BARCELONA
<OPTION value="CACERES">CACERES
<OPTION value="CADIZ">CADIZ
<OPTION value="ELCHE">ELCHE
<OPTION value="GERONA">GERONA
<OPTION value="HUELVA">HUELVA
<OPTION value="JAEN">JAEN
<OPTION value="LUGO">LUGO
<OPTION value="MADRID">MADRID
<OPTION value="NAVARRA">NAVARRA
<OPTION value="OVIEDO">OVIEDO
<OPTION value="PALENCIA">PALENCIA
<OPTION value="SEVILLA">SEVILLA
<OPTION value="TOLEDO">TOLEDO</OPTION>
</SELECT>
</td></tr><br>
<tr><td>Palabra Clave:</td><td><input NAME="clave" > </td>
<td><input TYPE="submit" VALUE="BUSCAR" id=SUBMIT1 name=SUBMIT1> </td></tr><br>
</td></tr>
</table></FORM></TD></TR>

<tr>
<td>
<table>
<tr><td>Area Candidato:</a><br>
<A href="Alta_Usuario.asp">Darse de alta</a><br>
Area Empresas:<br>
<A href="Alta_Empresa.asp">Darse de alta</a><br><br>
<A href="Encu.asp">Encuesta</a><br>
<A href="email.asp">Mandanos un email</a><br></td></tr>
</table>
</td>
<td>

<!-- AQUI DEBEN SALIR TODAS LAS OFERTAS, PAGINADAS DE 5 EN 5:-->
<%
dim pag_actual

'Si es la primera vez que entras o no:
if Request.QueryString ("pag")="" then
pag_actual =1
else 'Si no es la primera vez que entras
pag_actual= CInt (Request.QueryString ("pag")) 'por increible que parezca, sin la funcion Cint, no funcionaba lo de los hipervinculos de anterior y siguiente
end if

'Conectamos con la base de datos:
strconn="Data Source=" & Server.Mappath("Ofertas.mdb") & ";Provider=Microsoft.Jet.OLEDB.4.0;"
set conexion = Server.Createobject("adodb.connection")
conexion.open strconn
set rs=Server.CreateObject("ADODB.RecordSet")
rs.pagesize=5 'numero de registros por pagina


' ATENCION: LA SENTENCIA SQL DEBE GENERARSE A PARTIR DE LO
' QUE EL USUARIO HAYA ELEGIDO EN LAS LISTAS DESPLEGABLES, ES
' DECIR, EL USUARIO DECIDE QUE QUIERE VER LAS OFERTAS DE "SEVILLA"
' DE LA CATEGORIA "INFORMATICA":

sw=0
sql="SELECT codigo,empresa,descripcion,provincia,fecha FROM OFERTAS"

if Request.form("cat")<>"TODAS" and request.form("cat")<>"" then
if request.form("prov")<>"TODAS" then
sql= sql & " where categoria like '" & Request.Form("cat") & "'"
sql= sql & " and provincia like '" & request.form("prov") & "'"

elseif request.form("prov")="TODAS" then
sql= sql & " where categoria like '" & request.form("cat") & "'"

end if
sw=1

elseif Request.form("cat")="TODAS" then
if request.form("prov")<>"TODAS" then
sql= sql & " where provincia like '" & Request.Form("prov")& "'"
sw=1
end if
if Request.form("clave")<>"" and sw=1 then
sql= sql & " and descripcion like '%" & Request.Form("clave") & "%'"
elseif Request.form("clave")<>"" and sw=0 then
sql= sql & " where descripcion like '%" & Request.Form("clave") & "%'"
end if
end if


rs.Open SQL,conexion,3,1

if rs.recordcount = 0 then 'esto es por si introducimos un criterio para el que no haya ofertas de trabajo, por ejemplo "Elche"
%><center><h1>No hay registros</h1></center><%
else 'este else llega hasta casi el final del codigo

if Request.QueryString ("pag")<>"" then
variable= 5 *(Request.QueryString ("pag")) - 4
if variable + 5 > rs.RecordCount then
variable2= rs.RecordCount
else
variable2=variable + 4
end if
else
variable=1
variable2=5
end if

if rs.recordcount < 5 then
variable=1
variable2=rs.recordcount
end if

rs.absolutepage= pag_actual

%>

<!-- <h1><%response.write rs.absolutepage%></h1> -->

<font color="yellow"><h4>Mostrando registros del <%=variable%> al <%=variable2%> </h4></font>

<!--Esta tabla es la que muestra las ofertas de trabajo: -->
<table border="0">
<tr>
<td>Empresa</td>
<td>Puesto</td>
<td>Provincia</td>
<td>Fecha</td>
</tr>

<%
dim i
i=1
while i<=5 and not rs.EOF %>
<tr>
<%for j=1 to rs.Fields.Count - 1 %>
<%if j<>2 then%>
<td><%=rs(j)%></td>
<%else%>
<td><a href="veroferta.asp?codOferta=<%=rs("codigo")%>">< %=rs("descripcion")%></a></td>
<%end if%>
<%next%>
</tr>
<%rs.movenext
i=i+1
wend

%>
</table>

<br><br><br>

<!--Este bucle for es para que salgan los enlaces para ir a las diferentes paginas: -->
<center>
<%
%><h1><%response.write rs.pagecount%></h1><br><%=sql%><br><%
for i=1 to rs.PageCount %>
<%if i=pag_actual then%>
<%=i%>
<%else%>
<a href="PaginaPrincipal.asp?pag=<%=i%>"><%=i%></a>
<%end if%>
<%next%>
</center>

<!--Esto es para que aparezcan las etiquetas "Anterior" y "Siguiente": -->

<%
a=pag_actual
if pag_actual=1 and rs.recordcount > 5 then %>
<a href="PaginaPrincipal.asp?pag=2"><%=("Siguiente")% ></a>
<%elseif pag_actual > 1 and pag_actual < rs.pagecount then %>
<a href="PaginaPrincipal.asp?pag=<%=a - 1%>"><%=("Anterior")%></a>
<a href="PaginaPrincipal.asp?pag=<%=a + 1%>"><%=("Siguiente")%></a>
<%elseif pag_actual = rs.pagecount and rs.recordcount > 5 then %>
<a href="PaginaPrincipal.asp?pag=<%=a - 1%>"><%=("Anterior")%></a>
<%end if

end if 'final del if que empieza: if rs.recorcount=0 then ....

rs.Close
set rs=nothing
conexion.Close
set conexion=nothing
%>

</td>
</tr></TBODY></TABLE>


</BODY>
</html>
  #2 (permalink)  
Antiguo 30/03/2004, 12:41
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Tu problema es muy similar a este

Primero, quitá todos los .Form de los Request.. quedando, por ejemplo, así:


if Request.form("cat")<>"TODAS" and request.form("cat")<>"" then
if request.form("prov")<>"TODAS" then
sql= sql & " where categoria like '" & Request.form("cat") & "'"
sql= sql & " and provincia like '" & request.form("prov") & "'"


(recordá de eliminar lo que marqué en rojo, en toda parte del código)

Luego, debés pasar esos parámetros definidos por el usuario en los enlaces de "Anterior" y "Siguiente"
  #3 (permalink)  
Antiguo 31/03/2004, 01:57
 
Fecha de Ingreso: marzo-2004
Ubicación: Sevilla, España
Mensajes: 131
Antigüedad: 20 años, 2 meses
Puntos: 1
No he entendido una cosa Dazuaga

Muchas gracias por tomarte la molestia Dazuaga.

Por mas vueltas que le doy no acabo de entender lo que me quieres decir cuando dices:

pasa esos parámetros definidos por el usuario en los enlaces de "Anterior" y "Siguiente"

De nuevo agradecido, un saludo de España a Argentina.

  #4 (permalink)  
Antiguo 31/03/2004, 10:44
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Hola, aquí, en esta parte del código...


<a href="PaginaPrincipal.asp?pag=2"><%=("Siguiente")% ></a>
<%elseif pag_actual > 1 and pag_actual < rs.pagecount then %>
<a href="PaginaPrincipal.asp?pag=<%=a - 1%>"><%=("Anterior")%></a>
<a href="PaginaPrincipal.asp?pag=<%=a + 1%>"><%=("Siguiente")%></a>
<%elseif pag_actual = rs.pagecount and rs.recordcount > 5 then %>
<a href="PaginaPrincipal.asp?pag=<%=a - 1%>"><%=("Anterior")%></a>



debés agregar algo similar a lo que marco en bold:


<a href="PaginaPrincipal.asp?pag=<%=a - 1%>&cat=<% = request("cat") %>&prov=<% = request("prov") >"><%=("Anterior")%></a>


en todos los enlaces de "anterior" y "siguiente"

un saludo

Última edición por AlZuwaga; 31/03/2004 a las 10:45
  #5 (permalink)  
Antiguo 31/03/2004, 10:53
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
bueno, y con respecto a...

Cita:
Por mas vueltas que le doy no acabo de entender lo que me quieres decir cuando dices:

pasa esos parámetros definidos por el usuario en los enlaces de "Anterior" y "Siguiente"

Me refería a que debés pasarle a las otras páginas del "paginado", lo que el usuario ha especificado al realizar su búsqueda en el formulario. De lo contrario, ocurre lo que que te ocurría (estoy muy redundante hoy ) que al pasar a la siguiente página te devolvía todos los registros de la base de datos en 4 paginas.
  #6 (permalink)  
Antiguo 31/03/2004, 12:06
 
Fecha de Ingreso: marzo-2004
Ubicación: Sevilla, España
Mensajes: 131
Antigüedad: 20 años, 2 meses
Puntos: 1
Muchisimas gracias Dazuaga !!!

Dazuaga, debo darte las gracias de nuevo, al final me ha salido, es exactamente como tu dices, no sabes lo agradecido que te quedo

Tengo que estudiarme esto bien, está muy interesante la solucion que me has dado, me la tengo que aprender bien Dazuaga

De nuevo MUCHAS GRACIAS DAZUAGA !!!!

  #7 (permalink)  
Antiguo 31/03/2004, 12:38
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
De nada, un gusto.
__________________
...___...
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:45.