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

Busqueda con diferentes variables

Estas en el tema de Busqueda con diferentes variables en el foro de ASP Clásico en Foros del Web. hola tengo una base de datos que tiene los campos: edad categoria1 sexo poblacion provincia pretencion_economica tipo_jornada lo que estoy haciendo es montando un buscador ...
  #1 (permalink)  
Antiguo 29/07/2008, 23:44
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 2 meses
Puntos: 8
Busqueda con diferentes variables

hola tengo una base de datos que tiene los campos:

edad
categoria1
sexo
poblacion
provincia
pretencion_economica
tipo_jornada


lo que estoy haciendo es montando un buscador con un form que lo que me hace es que le ponga el valor a buscar a todos los campos

pero claro si por ejemplo por exeo no quiero filtrar tenguo que ir poniendo infinidad de ifs y elses con todas las posibilidadaes...

si solo quieren buscar por categoria1 y los otros campos que no filtren o que si quiero filtrar por tipo_jornada y por provincia...

el tema de la edad es tambien complicado pero ya lo tengo ya que en la bd guardo el año de nacimiento pero en el buscador quiero que se ponga la edad en años lo he conseguido asi

Código PHP:
 
edad_calc_i 
request.form("edad_calc_i")
edad_calc_f request.form("edad_calc_f")
 
if 
edad_calc_i edad_calc_f then
   fechainicial
day(date)&"/"&month(date)&"/"&(year(date)-edad_calc_i
   
fechafinalday(date)&"/"&month(date)&"/"&(year(date)-edad_calc_f
else
   
response.write("la edad inicial tiene que ser inferior a la edad final")
end if 
donde fechainicial y fecha final son los valores que utilizo para filtrar
  #2 (permalink)  
Antiguo 30/07/2008, 11:25
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Respuesta: Busqueda con diferentes variables

¿Y la pregunta cuál es?
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 30/07/2008, 12:22
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 9 meses
Puntos: 16
Respuesta: Busqueda con diferentes variables

mnmnmnmn CREO que lo que necesitas es ir armando de manera dinamica el SQL a ejecutar.

Código PHP:
dim sql 

sql 
"select * from tabla where "

if edad <> "" then  sql "edad = " edad 
if categoria1 <> "" then  sql "categoria1 = " categoria1 
if sexo <> "" then  sql "sexo = " sexo 
o algo por el estilo.

Ando con HANGOVER asi que no ando muy ocurrente hoy.
pero por ahi creo que va la cosa
  #4 (permalink)  
Antiguo 31/07/2008, 06:20
Avatar de engonga
Usuario no validado
 
Fecha de Ingreso: marzo-2002
Ubicación: Buenos Aires
Mensajes: 1.300
Antigüedad: 22 años, 2 meses
Puntos: 8
Respuesta: Busqueda con diferentes variables

si por ejemplo le paso la variable edad y la variable categoria

por cada porbavilidad tendria que hacer un if no

pero ejemplo
Código PHP:
dim sql
 
sql 
select from curriculums where
 
if edad <> "" then 
sql 
"edad="edad
end 
if
 
if 
edad <>"" and categoria <>"" then
sql 
"edad=" edad "and categoria="&categoria 
pero claro tengo un monton de posibilidades
  #5 (permalink)  
Antiguo 31/07/2008, 07:30
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Respuesta: Busqueda con diferentes variables

Cita:
Iniciado por ^engonga^ Ver Mensaje
si por ejemplo le paso la variable edad y la variable categoria

por cada porbavilidad tendria que hacer un if no

pero ejemplo
Código PHP:
dim sql
 
sql 
select from curriculums where
 
if edad <> "" then 
sql 
"edad="edad
end 
if
 
if 
edad <>"" and categoria <>"" then
sql 
"edad=" edad "and categoria="&categoria 
pero claro tengo un monton de posibilidades

AH pues lo mas sencillo es cotrolarlo todo en cada if

Código:
dim argCount
dim sql

argCount = 0

sql = "SELECT campos FROM tabla "

if len(edad) > 0 then
   if argCount > 0 then
        sql = sql & " AND "
   else
         sql = sql " WHERE "
   end if
   sql = sql & " edad =  " & edad
   argCount = argCount + 1
end if 


if len(categoria) > 0 then
   if argCount > 0 then
        sql = sql & " AND "
   else
         sql = sql " WHERE "
   end if
   sql = sql & " categoria =  " & categoria   
   argCount = argCount + 1
end if
La desventaja es que el codigo es enorme, pero es muy facil de controlar y mantener, ademas que es mucho menos abstracto que otras aproximaciones, y siempre se puede hacer copy & paste


Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 31/07/2008, 08:04
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
Respuesta: Busqueda con diferentes variables

Estos tus valores enviados

edad
categoria1
sexo
poblacion
provincia
pretencion_economica
tipo_jornada


si viene con valor es que hay que meterlos en la cadena


Código PHP:
sql "select * from curriculums where "
SLQAnexo ""


if edad <> "" then
     SLQAnexo 
SLQAnexo "edad = " edad " and "
end if

if 
categoria1 <> "" then
     SLQAnexo 
SLQAnexo l "categoria1 = " categoria1  " and "
end if


if 
sexo <> "" then
     SLQAnexo 
SLQAnexo  "sexo = " sexo  " and "
end if
...

luego cortas el ultimo and 
SLQAnexo mid(SLQAnexo,1,len(SLQAnexo) - 4)

SQL SQL SLQAnexo 

digo no se si así te jale mejor
[ando desvariando[

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #7 (permalink)  
Antiguo 31/07/2008, 09: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
Respuesta: Busqueda con diferentes variables

Cita:
Iniciado por u_goldman
AH pues lo mas sencillo es cotrolarlo todo en cada if

Cita:
Iniciado por JuanRAPerez
Código:
luego cortas el ultimo and 
SLQAnexo = mid(SLQAnexo,1,len(SLQAnexo) - 4)


La otra vez me topé con un problema similar y lo más sencillo que encontré fue meter los parámetros fijos al comienzo. Luego, el resto son puros IF's. La sentencia SQL que usé, a manera de ejemplo:


Código:
SQL = "SELECT Ministerios.*, Programas.* FROM Ministerios INNER JOIN Programas ON Ministerios.ID_MINISTERIO = Programas.ID_MINISTERIO WHERE Programas.Vigente = -1 "

If id_ministerio <> "0" then
	SQL = SQL & " AND Ministerios.Id_Ministerio = " & id_ministerio
End if

If str_PROG <> "" then
	SQL = SQL & " AND (Ministerios.MINISTERIO Like '%" & str_PROG & "%' OR Programas.ORGANISMO Like '%" & str_PROG & "%' OR Programas.Programa Like '%" & str_PROG & "%' OR Programas.Objetivos Like '%" & str_PROG & "%' OR Programas.Bienes_Servicios Like '%" & str_PROG & "%')"
End if

If id_palabraclave <> "0" then
	SQL = SQL & " AND Programas.ID_PN IN(SELECT programas_palabrasclaves.ID_PN FROM programas_palabrasclaves WHERE programas_palabrasclaves.id_palabraclave=" & id_palabraclave & ")"
End if

SQL = SQL & " ORDER BY Ministerios.Jerarquia, Organismo"

¿Que no tenés parámetros fijos para usar al comienzo? Pues sí los tenés!!!:

Código:
SQL = "SELECT * FROM tu_tabla WHERE 1 = 1 "

if...
	SQL = SQL & " AND otro campo = " & una_variable
end if

(de hecho, yo me había olvidado que debía mostrar sólo los registros donde el campo Programas.Vigente fuera TRUE, así que le coloqué el WHERE 1=1. Luego lo quité porque incorporé WHERE Programas.Vigente = -1)

__________________
...___...
  #8 (permalink)  
Antiguo 31/07/2008, 10:25
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Respuesta: Busqueda con diferentes variables

Cita:
Iniciado por Al Zuwaga Ver Mensaje
(de hecho, yo me había olvidado que debía mostrar sólo los registros donde el campo Programas.Vigente fuera TRUE, así que le coloqué el WHERE 1=1. Luego lo quité porque incorporé WHERE Programas.Vigente = -1)
Bueno es que me faltó decir lo más sencillo desde mi punto de vista...así la cosa cambia

La razón por la cuál siempre recomiendo construir esas sentencias dinámicas con el where o el operador en cuestión es precisamente por lo que te sucedió con el WHERE, además de que es como que un poco más intuitivo -creo-, no es que tenga nada malo hacer un WHERE 1 = 1, pero mmmhhh "you know"


Saludos AZ
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #9 (permalink)  
Antiguo 31/07/2008, 14:58
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 9 meses
Puntos: 16
Respuesta: Busqueda con diferentes variables

si se quiere hacer un WHERE 1 = 1 mas digno, podria hacerce un

where INDICE_DEL_CAMPO > ""

de esa manera se obiiga a que la consulta se vaya por determinado indice y se evita hacer un FULL TABLE.

mis 2 cents.
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 17:30.