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

Multiples Submit

Estas en el tema de Multiples Submit en el foro de ASP Clásico en Foros del Web. Gente: Estoy tratando de normalizar una pagina(procesaBusquda.asp) que tiene 3000 lineas! . Esta pagina busca(segun los criterios/combinaciones, son muchos) de busqueda en la BD. Lo ...
  #1 (permalink)  
Antiguo 29/03/2006, 10:09
Avatar de horizonte  
Fecha de Ingreso: octubre-2005
Ubicación: A 50cm del Monitor(el angulo depende del estado de animo)
Mensajes: 148
Antigüedad: 19 años, 6 meses
Puntos: 1
Pregunta Multiples Submit

Gente:

Estoy tratando de normalizar una pagina(procesaBusquda.asp) que tiene 3000 lineas! . Esta pagina busca(segun los criterios/combinaciones, son muchos) de busqueda en la BD.

Lo que a mi se me ocurrio fue hacer una pagina(procesaCriterio1.asp) por cada criterio de busqueda, para que esto sea mas "reusable / mantenible", pero no tengo idea como hacerlo ya que el submit siempre redirecciona a la misma pagina.

Estuve buscando sobre "Remote Scripting" pero no encontre ningun tutorial, manual bueno, como los que hay de java o asp.

Bueno si alguien sabe si es factible y pueda aportar algo, le agradesco.
Saludos
__________________
Mientras tanto aqui, en la Gran Ciudad...
Una nueva hora,...Comienza
:Zzz:
  #2 (permalink)  
Antiguo 29/03/2006, 10:33
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
mmmmmmmm, pues leí no menos de 5 veces tu post y siento decirte que no entendí el problema.

¿quieres "normalizar" un código? ¿a qué te refieres con normalizar un código ASP?
¿cómo que el submit redirecciona a la misma página?, el submit redirecciona al ACTION

nomás no entendí que quieres hacer ni cuál es tu problema

Sorry
  #3 (permalink)  
Antiguo 29/03/2006, 11:56
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Ok, creo que la cosa es que quieres reducir el número de líneas que tienes en dicho archivo, hasta donde entendí, este archivo es para una búsqueda y se llama a sí mismo, quizás dependiendo de los valores que tomen ciertos inputs en tu forma, el código ejecuta una tarea.

Lo que puedes hacer es:

1. Separa la forma del código
2. Crea el código necesario en un archivo distinto
3. Preferentemente, separa los queries en un include, lo que te recomendaria sería una función de búsqueda, regularmente para esto, el query base es el mismo, y solo cambian los argumentos que recibe

strSQL = "SELECT campos FROM tabla "
if argumento1 then
strSQL = strSQL & " WHERE condicion "
end if

if argumento1 then
strSQL = strSQL & " AND condicion2 "
end if

etc...

En resumen, trata de hacerlo lo mas modular posible separando en la medida de lo posible la lógica de la presentación. Si no es esto lo que quieres, la verdad me uno a Myakire y no entendí.

Otra cosa, el término de "normalización", se refiere a bases de datos relacionales.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #4 (permalink)  
Antiguo 29/03/2006, 12:04
Avatar de ElAprendiz  
Fecha de Ingreso: enero-2002
Ubicación: Maipu, Chile
Mensajes: 3.706
Antigüedad: 23 años, 3 meses
Puntos: 2
coincido con U_G
  #5 (permalink)  
Antiguo 29/03/2006, 14:00
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
aaahh no, si se trata de sumar post, jejeje ....
  #6 (permalink)  
Antiguo 29/03/2006, 17:52
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Cita:
Iniciado por horizonte
Gente:
Lo que a mi se me ocurrio fue hacer una pagina(procesaCriterio1.asp) por cada criterio de busqueda, para que esto sea mas "reusable / mantenible", pero no tengo idea como hacerlo ya que el submit siempre redirecciona a la misma pagina.
sera que a la pagina que va usa case
si usa case copia los case a paginas diferentes y ahi redireccioans el formulario a cada pagina que has hecho

verifica que paginas usan cosas somilares y mandalos como variables, sobre todo si los resultados se muestran en un mismo formato

y modifica las opciones de la pagina del formulario

por ejemplo

si las busquedas van a la misma pagina pero son bases diferentes que busca y campos diferentes de busqueda haces los mismos "cases" pero envia las variables que necesites para contruir las sentencias

recoges las variables
tabla = request("tabla")
cariablecampo = request("variablecampo")
order = = request("ordenar")

sql = "select * from "& tabla &" where "& campo &" = "& variablecampo &" order by "&variablecampo &" by "& Ordenar &""

y asi podes usar los mismos recordset de tu pagina solo con mandar las variables necesarias.

saludos y espero que se entienda la idea, jejeje llevo dos dias de desvelo con un Microsoft Exchange que me dio lios en la Organizacion y me toco instalarlo de 0 todo
__________________
JuanRa Pérez
San Salvador, El Salvador
  #7 (permalink)  
Antiguo 29/03/2006, 17:53
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
jajajaj
es asi como dijo ugolman

no lei completo los post pero es la misma idea solo que con otro nombre jejejeje
__________________
JuanRa Pérez
San Salvador, El Salvador
  #8 (permalink)  
Antiguo 29/03/2006, 22:09
Avatar de horizonte  
Fecha de Ingreso: octubre-2005
Ubicación: A 50cm del Monitor(el angulo depende del estado de animo)
Mensajes: 148
Antigüedad: 19 años, 6 meses
Puntos: 1
Vamos de nuevo

Antes que nada gracias por contestar(especialmete a U_Goldman y JuanRAPerez).

Vamos de vuelta porque creo que no me exprese bien:
Tengo una pagina(Busquedas.asp) que esta del lado del cliente y otra(procesaBusqueda.asp) del lado del servidor que hace(segun las multiples opciones/campos elegidas)la busqueda en la BD, esta ultima pagina es la que tiene 3000 lineas.

Cuando mencione "el submit siempre redirecciona a la misma pagina", quise decir que el submit/action no puede tener una variable como pagina a la que hace el submit, esto es:
Código:
<FORM name="form" method="post" action="<%= PAGINA%>">
Si esto fuera factible yo podria hacer una pagina(procesaBusqueda1.asp,procesaBusqueda2.asp,. .), por cada criterio de busqueda(que son muchos) y no juntar todo en una sola como esta ahora. Pero todos sabemos que esto no es factible.

Cita:
Iniciado por u_goldman
Otra cosa, el término de "normalización", se refiere a bases de datos relacionales.
Si, use ese termino(erroneamente),...quise decir "rehacer" la pagina para que sea facilmente mantenible(creo que ese era uno de los objetivos de Normalizar una BD).

Cita:
Iniciado por u_goldman
Lo que puedes hacer es:

1. Separa la forma del código
2. Crea el código necesario en un archivo distinto
3. Preferentemente, separa los queries en un include, lo que te recomendaria sería una función de búsqueda, regularmente para esto, el query base es el mismo, y solo cambian los argumentos que recibe
Si te entendi bien vos queres que en el include vayan las funciones que determinan que tipo de busqueda y en la pagina que procesa la busqueda va solo algunos querys genericos, desde donde llamo a las funciones del include?. Si es asi voy a ver como lo adapto a las opciones de busqueda porque son muchas.

Cita:
Iniciado por juanraperez
sera que a la pagina que va usa case
si usa case copia los case a paginas diferentes y ahi redireccioans el formulario a cada pagina que has hecho
La verdad no entendi esa parte..., igualmente si podria usar select case para verificar los input que estan llenos y pasarlos al servidor.

Cuales son las busquedas?:
Si les sirve de algo les cuento que tengo 7 opciones de busqueda que pueden estar en consultas particionadas( o no) y a su vez se dividen en Listado por html o por Excel..., algo asi como 28 Querys distintos. Basicamente estas busquedas generan 7 tipos de vistas distintas(segun la opcion de busqueda) y a su vez la vista se puede mostrar en html o Excel. El formato(es decir la tabla) html para las 7 vistas son iguales, pero son distintas para el Excel.

Espero haya sido claro y agradesco nuevamente a los que respondieron,
Saludos.
__________________
Mientras tanto aqui, en la Gran Ciudad...
Una nueva hora,...Comienza
:Zzz:
  #9 (permalink)  
Antiguo 30/03/2006, 00:32
Avatar de Hereje  
Fecha de Ingreso: junio-2002
Ubicación: Córdoba, Argentina
Mensajes: 439
Antigüedad: 22 años, 11 meses
Puntos: 2
Hola!

Si es posible cambiar el action de un formulario dependiendo del botón presionado, se logra mediante JavaScript y no lo recomiendo por el hecho de que algún "colgado" por ahi puede ternerlo desactivado y se perderia la funcionalidad del formulario, este lenguaje debe usarse para otras cosas.

De todas formas, un pequeño ejemplo:
Código HTML:
...
<form method="post" action="procesa1.asp">
  <!-- aca irian todos los campos text, radio, select, etc -->
  <input type="submit" value="Aceptar 1" /> <!-- botón por defecto, envía al action definido en el form con sólo presionar enter en el mismo -->
  <input type="button" value="Aceptar 2" onclick="this.parentNode.action='procesa2.asp'; this.parentNode.submit();" />
  <input type="button" value="Aceptar 3" onclick="this.parentNode.action='procesa3.asp'; this.parentNode.submit();" />
</form>
...
El formulario se enviaría a un procesaX.asp según el botón presionado.

La alternativa que te propongo es la siguiente: por un lado el HTML,
Código HTML:
<form method="post" action="multiprocesa.asp">
  <!-- aca irian todos los campos text, radio, select, etc -->
  <input type="submit" name="accion" value="Aceptar 1" />
  <input type="submit" name="accion" value="Aceptar 2" />
  <input type="submit" name="accion" value="Aceptar 3" />
</form> 
y por el lado de ASP (multiprocesa.asp)
Código:
<!--#include file="multiprocesa_acciones.asp"-->
<%
dim accion
accion = request.form("accion")

select case accion

  case "Aceptar 1":
    acciones_1()

  case "Aceptar 2":
    acciones_2()

  case "Aceptar 3":
    acciones_3()

end select
%>
y el nuevo archivo de inclusión (multiprocesa_acciones.asp) con todas las funciones según el botón presionado:
Código:
<%
function acciones_1()
  'aca todo lo que quieras cuando se presione el botón Aceptar 1
end function

function acciones_2()
  'aca todo lo que quieras cuando se presione el botón Aceptar 2
end function

function acciones_3()
  'aca todo lo que quieras cuando se presione el botón Aceptar 3
end function
%>
A partir de esto puedes crear las variantes que mas se ajusten a tus necesidades, como diferentes archivos de inclusión, o tener todo en una sola página, etc.

Espero sirva de algo!
__________________
Sergio
  #10 (permalink)  
Antiguo 29/04/2006, 13:35
Avatar de horizonte  
Fecha de Ingreso: octubre-2005
Ubicación: A 50cm del Monitor(el angulo depende del estado de animo)
Mensajes: 148
Antigüedad: 19 años, 6 meses
Puntos: 1
Gracias

Ante todo perdon por la demora en contestar ya que lo habia resuelto hace 1mes atras(aprox)... Use la ayuda de Hereje para solucionar este tema.

Lo principal era:
Código:
 ...
<script language=javascript>
  function validar() {
    ....
    ....
    ....
    if(cumple condicion1) {
      document.form.action='Procesa1.asp';
      document.form.submit();
    }
    if(cumple condicion2) {
      document.form.action='Procesa2.asp';
      document.form.submit();
    }
    if(cumple condicion3) {
      document.form.action='Procesa3.asp';
      document.form.submit();
    }
    if(cumple condicion4) {
      document.form.action='Procesa2.asp';
      document.form.submit();
    }
    ...etc
    document.form.submit();  //Que es el submit por Default.
  }
</script>
Espero les haya sido util, y gracias a todos los que aportaron, especialmente a Hereje.
Saludos.
__________________
Mientras tanto aqui, en la Gran Ciudad...
Una nueva hora,...Comienza
:Zzz:
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 11:34.