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

Listín telefónico

Estas en el tema de Listín telefónico en el foro de ASP Clásico en Foros del Web. Hola a todos, estoy desarrollando un pequeño listín telefónico para mi intranet. He creado una hoja html con un form donde hay 5 campos de ...
  #1 (permalink)  
Antiguo 31/05/2005, 08:28
 
Fecha de Ingreso: enero-2005
Ubicación: Valencia
Mensajes: 66
Antigüedad: 19 años, 4 meses
Puntos: 0
Listín telefónico

Hola a todos, estoy desarrollando un pequeño listín telefónico para mi intranet. He creado una hoja html con un form donde hay 5 campos de texto que podemos utilizar para realizar la búsqueda, es decir, que podemos filtrar introduciendo datos en todos, algunos o solo un campo de texto. Si no me equivoco esto supone para la hoja ASP introducir bastante código, ya que tendré que detectar que campos quiere utilizar el usuario para filtrar y en función de eso crear la consulta.
Mi pregunta es,¿existe alguna forma simplificada de hacer esto?es decir, si se puede construir la consulta dependiendo de los campos que utilice el cliente, ya que de lo contrario tendre que tener todas las consultas posibles construidas y seleccionarlas en función del filtro que quiera aplicar el cliente.
Gracias
  #2 (permalink)  
Antiguo 31/05/2005, 10:19
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Código:
param = 0
strSQL = "SELECT campo FROM tabla "

if request.form("criterio_campo1") <> "" then
   param = 1
   strSQL = strSQL & " WHERE "
   strSQL = strSQL & " campo = " & request.form("criterio_campo1")
end if

if request.form("campo_criterio2") <> "" then
  if param = 0 then
    strSQL = strSQL & " WHERE "
    param = 1
  else
    strSQL = strSQL & " AND "
  end if
  strSQL = strSQL & " campo_criterio2 = " & request.form("campo_criterio2")
end if
Y asi sucesivamente.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 01/06/2005, 01:16
 
Fecha de Ingreso: enero-2005
Ubicación: Valencia
Mensajes: 66
Antigüedad: 19 años, 4 meses
Puntos: 0
Muchas gracias u_goldman, pero lo que yo intentaba evitar era poner mucho código debido a las diferentes combinaciones que existen. Debido a que puedo utilizar más de un campo para filtrar puedo hacer unas cuantas combinaciones con el "if".
De todos modos una pregunta más, las webs como "paginas-amarillas.es"¿ utilizan este tipo de sentencias para realizar las búsquedas?
Gracias
  #4 (permalink)  
Antiguo 01/06/2005, 10:08
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
No se si utilizarán esta misma lógica para estructurar consultas dinámicas, en realidad, se puede hacer de una que otra manera más, pero en mi experiencia es la forma menos abstracta de trabajar con consultas dinámicas, con lo cual tu sistema será mas fácil de entender y de mantener, alguna vez recuerdo que me quise poner exquisito y no quise utilizar tantos if, cree una matriz que recuperaba los valores, iteraba dicha matriz y a partir de ahí generaba la consulta, en primera fue todo un show, después tuve que darle mantenimiento y no solo era complejo sino demasiado abstracto, incluso yo, que desarrollé el sistema, había partes que no podía entender.

Otra que se puede hacer es generar stored procedures, el problema con esto es que el código generado se vuelve exponencial por cada una de la variantes que tienes, con lo cual el mantenimiento se vuelve también imposible, por eso de acuerdo a mi experiencia, este método, bien estructurado es el mas intuitivo y el que menos problemas te causará.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 01/06/2005, 10:28
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 2 meses
Puntos: 2
Hola!

Estoy de acuerdo con que es la mejor manera, mas sencilla y realmente mas ordenada, pero tambien puedes tener todo eso en un ciclo, como:

Cita:
const_NumCriterios = 10 //Solo es un ejemplo, los criterios puedes tenerlos de forma dinamica.
SqlWhere = ""
for i = 0 to const_NumCriterios

criterio = "criterio_campo" & Cstr(i+1)
valor = request.form(criterio)

if valor <> "" then

SqlWhere = SqlWhere & criterio & " = " & valor

if i < const_NumCriterios

SqlWhere = SqlWhere & ", "

end if

end if

next

Sql = "select campo from tabla where " & SqlWhere
Claro, en tu programacion necesitaras cosas como que los campos de criterio se llamen igual, tal como criterio1, criterio2, etc, bueno, si tienes campos como, Nombre, Edad, etc... pues no funcionara, si no puedes conciliar que los campos tengan el mismo nombre y ademas los campos de tu base de datos tampoco, pues tendras que hacerlo todo unos por uno, en lo cual estoy de acuerdo.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
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:50.