Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   ASP Clásico (http://www.forosdelweb.com/f15/)
-   -   Filtrar Resultados con Combos (http://www.forosdelweb.com/f15/filtrar-resultados-con-combos-655998/)

nemesixxx 20/12/2008 17:14

Filtrar Resultados con Combos
 
Hola, muy buenas noches.

Les escribo porque deseo realizar una búsqueda en ASP filtrando con Combos. Consistiría básicamente en una página donde con un desplegable (combo) seleccionases una "asignatura", en otro igual, un "curso", le dieras a realizar búsqueda con un botón submit, y EN LA MISMA PÁGINA te mostrara en una tabla los resultados, con un <%while not rs.eof rs.movenext wend%>.

El problema surge que no sólo puedes elegir una asignatura o un curso, también debe haber una posibilidad de buscar por todos los cursos. En la sentencia SQL, si eliges "Todos los cursos" o "Todas las asignaturas" en el WHERE no debe poner la condición de que la asignatura o curso sea ESA o ESE. Creo que me explico bien, es un poco lioso pero bueno...

Básicamente habría que construirse una cadena (la llamamos por ejemplo micadena) y en el rs.open le pondriamos rs.open "select * from la_tabla where " & micadena & " ORDER BY lo_que_sea DESC".

El construir esta cadena dependiendo que se elige es un poco complicada, espero podáis echarme una mano, porque sabiendo esto luego quiero ampliar la búsqueda añadiendo unos calendarios para elegir las fechas entre las que quiero buscar.

Nada más, espero sus respuestas. Me es algo urgente.

Un saludo ;)

Shiryu_Libra 20/12/2008 19:19

Respuesta: Filtrar Resultados con Combos
 
:pensando:........

que tanto codigo llevas y como lo estas tratando??????

luisvasquez 21/12/2008 11:55

Respuesta: Filtrar Resultados con Combos
 
Hola nemesixxx,

Fijate en esta búsqueda (estilo filtro) que tengo en mi sitio a ver si se adapta a lo que quieres:

http://www.tuflete.com/buscar_camiones.asp

Si es así te paso el código y lo adaptamos.

Saludos,
Luis

nemesixxx 21/12/2008 19:01

Respuesta: Filtrar Resultados con Combos
 
Bien, pues al haber en total 4 posibilidades he creado 4 rs.open "select....." atendiendo a lo que pone el usuario.

Tengo un campo fecha de tipo Fecha/Hora que es Fecha General, en Access. La forma de presentarlo lo hace con barras ("/") y dia/mes/año, pues he hecho pruebas con Response.Write y demás.

Este es el código de una de las sentencias:

Código asp:
Ver original
  1. rs.open "select * from pedidos where idusuarios="&session("id") &" AND fechaimpresion is not NULL AND asignatura = '" & Request.form("cmbasignaturas") &"' AND curso = '" & Request.form("cmbcursos") &"' AND fechaimpresion BETWEEN #"& request.form("txtfechainicial") &"# AND  #"& request.form("txtfechainicial") &"#",cnn,3,3

Es una búsqueda de un pedido atendiendo a la Asignatura y Curso seleccionados, que el campo "fechaimpresion" tenga algo (halla sido impreso) y que el campo "fechaimpresion" además esté entre esos valores.

Decir que en "txtfechainicial" y "txtfechafinal" al hacer clic en el campo de texto me abre un calendario donde marcas el día, mes y año y te cambia el valor de la caja de texto por "dia/mes/año" seleccionado, en este formato "dd/mm/yyyy".

A ver si podéis ayudarme, yo es que el código lo veo bien. Un saludo!!

Adler 22/12/2008 07:13

Respuesta: Filtrar Resultados con Combos
 
Hola

¿Te da algún error? ¿No hace lo que esperas que hiciera? ¿No le faltan las comillas simples a las fechas? :pensando:

'#"& request.form("txtfechainicial") &"#' AND '#"& request.form("txtfechainicial") &"#'

Suerte

nemesixxx 22/12/2008 08:46

Respuesta: Filtrar Resultados con Combos
 
Efectivamente, no hace lo que yo esperaba. Tengo 2 pedidos entre las fechas 1 de diciembre y 31 de diciembre y no me los muestra.

Al ponerle las comillas simples, me ha tirado este error:

Código asp:
Ver original
  1. Microsoft JET Database Engine error '80040e07'
  2.  
  3. No coinciden los tipos de datos en la expresión de criterios.
  4.  
  5. /falces/fotocopias/admin/gesfotocopias/buscar.asp, línea 25

Las fechas en ASP creo que van entre almohadillas, por eso lo había dejado nada más que con almohadillas, es decir, algo como lo siguiente: #dd/mm/yyyy#.

A ver si entre todos lo sacamos jeje! Un saludo y gracias por responder.

Shiryu_Libra 22/12/2008 09:37

Respuesta: Filtrar Resultados con Combos
 
:adios:... nemesis.... muestra la fraccion de codigo que usas para la consulta, para poder ayudarte mejor

:arriba:

nemesixxx 22/12/2008 09:51

Respuesta: Filtrar Resultados con Combos
 
Esto es el código de la búsqueda:

Código asp:
Ver original
  1. <%
  2. if session("nombre")="" or session("nivel")<1 then
  3.     response.Redirect("index.asp")//lo llevo a la página de login
  4. end if
  5.  
  6.     set cnn=server.CreateObject("ADODB.Connection")
  7.     set rs=server.CreateObject("ADODB.Recordset")
  8.     set rsasignaturas=server.CreateObject("ADODB.Recordset")
  9.     set rscursos=server.CreateObject("ADODB.Recordset")
  10.     ruta=server.MapPath("../db/bd.mdb")
  11.     cnn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ruta & ";User Id=admin;Password=;"
  12.     miasignatura=Request.Form("cmbasignaturas")
  13.     micurso=Request.Form("cmbcursos")
  14.    
  15. If miasignatura="0" AND micurso="0" Then
  16. 'esto es si seleccionan todas las asignaturas asignatura y todos los cursos
  17.     rs.open "select * from pedidos where idusuarios="&session("id") &" AND fechaimpresion is not NULL AND fechaimpresion BETWEEN #"& request.form("fechainicial") &"# AND  #"& request.form("fechainicial") &"#",cnn,3,3
  18.     ElseIf miasignatura="0" AND micurso<>"0" Then
  19.     'esto es si seleccionan todas las asignaturas y un curso
  20.     rs.open "select * from pedidos where idusuarios="&session("id") &" AND fechaimpresion is not NULL AND curso = '" & Request.form("cmbcursos") &"' AND fechaimpresion BETWEEN #"& request.form("fechainicial") &"# AND  #"& request.form("fechainicial") &"#",cnn,3,3
  21.         ElseIf miasignatura<>"0" AND micurso="0" Then
  22.             'esto es si seleccionan una asignatura y todos los cursos
  23.         rs.open "select * from pedidos where idusuarios="&session("id") &" AND fechaimpresion is not NULL AND asignatura = '" & Request.form("cmbasignaturas") &"' AND fechaimpresion BETWEEN #"& request.form("fechainicial") &"# AND  #"& request.form("fechainicial") &"#",cnn,3,3
  24.         Else
  25.             'esto es si seleccionan una asignatura y un curso
  26.         rs.open "select * from pedidos where idusuarios="&session("id") &" AND fechaimpresion is not NULL AND asignatura = '" & Request.form("cmbasignaturas") &"' AND curso = '" & Request.form("cmbcursos") &"' AND fechaimpresion BETWEEN #"& request.form("fechainicial") &"# AND  #"& request.form("fechainicial") &"#",cnn,3,3
  27. End If
  28. %>

Y así es como lo "pinto" en la tabla:

Código asp:
Ver original
  1. <table width="634" border="0" align="center" class="bordetablas">
  2.             <tr class="titular">
  3.               <td width="115"><div align="center">Fecha de impresi&oacute;n</div></td>
  4.               <td width="86"><div align="center">Asignatura</div></td>
  5.               <td width="107"><div align="center">Curso</div></td>
  6.               <td width="143"><div align="center">Concepto</div></td>
  7.               <td width="49"><div align="center">Copias</div></td>
  8.               <td width="74"><div align="center">Hojas/copia</div></td>
  9.               <td width="26"><div align="center">Ver</div></td>
  10.             </tr>
  11. <%while not rs.eof%>
  12.             <tr class="textonormal">
  13.               <td><div align="center"><span class="titular"><span class="textonormal"><%=rs("fechaimpresion")%></span></span></div></td>
  14.               <td><div align="center"><span class="textonormal"><%=rs("asignatura")%></span></div></td>
  15.               <td><div align="center"><span class="textonormal"><%=rs("curso")%></span></div></td>
  16.               <td><div align="center"><span class="textonormal"><%=rs("pedido")%></span></div></td>
  17.               <td><div align="center"><span class="textonormal"><%=rs("copias")%></span></div></td>
  18.               <td><div align="center"><span class="textonormal"><%=rs("originales")%></span></div></td>
  19.               <td><div align="center"><a href="#"><img src="../../images/ver.png" alt="ver" width="16" height="16" border="0" onclick="AbreVentana('recibo.asp?idpedidos=<%=rs("idpedidos")%>')""/></a></div></td>
  20.             </tr>
  21. <%
  22.   rs.movenext
  23.   wend
  24.   %>
  25.     </table>

Adler 22/12/2008 15:15

Respuesta: Filtrar Resultados con Combos
 
Hola

Prueba con

CDate(request.form("fechainicial"))

Suerte

nemesixxx 22/12/2008 16:03

Respuesta: Filtrar Resultados con Combos
 
Nada, que no me sale lo que busco...

A ver si podemos encontrar el error... :'(

Adler 23/12/2008 06:08

Respuesta: Filtrar Resultados con Combos
 
Hola

Detalles, detalles ... :neurotico:patada:

Código asp:
Ver original
  1. If miasignatura="0" AND micurso="0" Then
  2.  
  3. 'esto es si seleccionan todas las asignaturas asignatura y todos los cursos
  4.  
  5.     rs.open "select * from pedidos where idusuarios="&session("id") &" AND fechaimpresion is not NULL AND fechaimpresion BETWEEN #"& request.form("fechainicial") &"# AND  #"& request.form("txtfechafinal") &"#",cnn,3,3
  6.  
  7.     ElseIf miasignatura="0" AND micurso<>"0" Then
  8.  
  9.     'esto es si seleccionan todas las asignaturas y un curso
  10.  
  11.     rs.open "select * from pedidos where idusuarios="&session("id") &" AND fechaimpresion is not NULL AND curso = '" & Request.form("cmbcursos") &"' AND fechaimpresion BETWEEN #"& request.form("fechainicial") &"# AND  #"& request.form("txtfechafinal") &"#",cnn,3,3
  12.  
  13.         ElseIf miasignatura<>"0" AND micurso="0" Then
  14.  
  15.             'esto es si seleccionan una asignatura y todos los cursos
  16.  
  17.         rs.open "select * from pedidos where idusuarios="&session("id") &" AND fechaimpresion is not NULL AND asignatura = '" & Request.form("cmbasignaturas") &"' AND fechaimpresion BETWEEN #"& request.form("fechainicial") &"# AND  #"& request.form("txtfechafinal") &"#",cnn,3,3
  18.  
  19.         Else
  20.  
  21.             'esto es si seleccionan una asignatura y un curso
  22.  
  23.         rs.open "select * from pedidos where idusuarios="&session("id") &" AND fechaimpresion is not NULL AND asignatura = '" & Request.form("cmbasignaturas") &"' AND curso = '" & Request.form("cmbcursos") &"' AND fechaimpresion BETWEEN #"& request.form("fechainicial") &"# AND  #"& request.form("txtfechafinal") &"#",cnn,3,3
  24.  
  25. End If

Suerte

luisvasquez 23/12/2008 08:22

Respuesta: Filtrar Resultados con Combos
 
El error debe estar en un apostrofe o alguna variable que no tiene valor asignado.

Sinceramente yo recomiendo que guardes el SQL en una variable en lugar de ejecutarlo directamente. Me explico:

cambia

rs.open "select *.... por MiSQL= "select *...

y luego, despues del End if de la linea 25 (del ejemplo anterior) pongas esto

response.write(MiSQL)
response.end()
rs.open MiSQL

En principio no ejecutará el sql pero te permitirá verlo para analizarlo. Copialo y pegalo en Access (como consulta) para que te muestre donde está el error. Así vas depurando.

Saludos

nemesixxx 23/12/2008 09:08

Respuesta: Filtrar Resultados con Combos
 
Adler no me he fijado muy bien que has modificado pero he copiado el código y pegado y YA FUNCIONA !!! Podrías comentarlo... igual era alguna & no sé...

De todas formas, muchísimas gracias a ti y a TODOS por molestarse tanto en que me funcione el filtro de las narices jeje!!

Os deseo muy feliz navidad !!! :-) :pirata: :aplauso:

Adler 23/12/2008 12:35

Respuesta: Filtrar Resultados con Combos
 
Hola

Hagamoslo más despacio :cool:

BETWEEN #"& request.form("fechainicial") &"# AND #"& request.form("fechainicial") &"#

BETWEEN #"& request.form("fechainicial") &"# AND #"& request.form("txtfechafinal") &"#


La zona horaria es GMT -6. Ahora son las 10:05.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.