NO para cualquiera, la sql dinamica se me va

loureed
31 de Marzo del 2004
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>