Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Búsqueda con múltiples parámetros en sql

Estas en el tema de Búsqueda con múltiples parámetros en sql en el foro de Bases de Datos General en Foros del Web. estoy construyendo una pagina expositora de vehiculos, en la pagina principal inclui un formulario de busqueda con 3 parametros : marca, año y precio. la ...
  #1 (permalink)  
Antiguo 08/12/2003, 23:03
 
Fecha de Ingreso: diciembre-2003
Mensajes: 5
Antigüedad: 20 años, 4 meses
Puntos: 0
Pregunta Búsqueda con múltiples parámetros en sql

estoy construyendo una pagina expositora de vehiculos, en la pagina principal inclui un formulario de busqueda con 3 parametros : marca, año y precio.

la consulta SQL crea un juego de registros que contiene solamente los resultados de la búsqueda.

SELECT puesto, marca, modelo, categoria, ano, cod_precio, precio
FROM automotriz
WHERE cod_precio = 'varPrecio' AND ano = varAno
AND marca = 'varMarca'
ORDER BY puesto ASC

esta aca todo funciona bien, si ingreso todos los parametros, pero, por ejemplo cuando quiero buscar todos los automoviles marca nissan sin especificar año, varAno toma valor 0 por defecto y busca todos los vehiculos cuyo año sea 0 (ninguno),
entienden mi problema.....
por fabor digan que si y peguenme una alludadita
  #2 (permalink)  
Antiguo 09/12/2003, 02:56
 
Fecha de Ingreso: octubre-2003
Mensajes: 81
Antigüedad: 20 años, 6 meses
Puntos: 0
Holas!!
Para hacer lo que quieres hacer tendras k ir construyendo la sql dependiendo de los parametros que meta el usuario...
Ejemplo..

dim sql as string

Sql="SELECT puesto, marca, modelo, categoria, ano, cod_precio, precio
FROM automotriz
WHERE marca = 'varMarca'"
Hasta aki seria el cacho de sql k se ejecutaria siempre...y ahora hay k ir añadiendo trozos..

Imaginemos que el año es un combobox llamado cmbano..

If isnull(cmbano.value) then
sql=sql & " AND ano=varAno"
endif

sql=sql & "ORDER BY puesto ASC"

Y asi ya tendrias construida la sql...
Espero haberme explicado..
__________________
Salu2
  #3 (permalink)  
Antiguo 09/12/2003, 15:25
 
Fecha de Ingreso: diciembre-2003
Mensajes: 5
Antigüedad: 20 años, 4 meses
Puntos: 0
mira hise lo que me mencionaste, es decir segui la logica, este es el codigo resultante, pero no me resulta

<%
Dim rs1__varPrecio
rs1__varPrecio = "0"
If (Request.QueryString("precio") <> "") Then
rs1__varPrecio = Request.QueryString("precio")
End If
%>
<%
Dim rs1__varAno
rs1__varAno = "0"
If (Request.QueryString("ano") <> "") Then
rs1__varAno = Request.QueryString("ano")
End If
%>
<%
Dim rs1__varMarca
rs1__varMarca = "0"
If (Request.QueryString("marca") <> "") Then
rs1__varMarca = Request.QueryString("marca")
End If
%>
<%
Dim rs1
Dim rs1_numRows
Dim sql as string
Set rs1 = Server.CreateObject("ADODB.Recordset")
rs1.ActiveConnection = MM_info_STRING
sql = "SSELECT puesto, marca, modelo, categoria, ano, cod_precio, precio FROM automotriz WHERE"
If (Request.QueryString("precio") <> "0") then
sql=sql + "AND cod_precio = '" + Replace(rs1__varPrecio, "'", "''")""
End if
If (Request.QueryString("ano") <> "0") then
sql=sql + "AND ano = " + Replace(rs1__varAno, "'", "''")""
End if
If (Request.QueryString("marca") <> "0") then
sql=sql + "AND marca = '" + Replace(rs1__varMarca, "'", "''")""
End if
rs1.Source = sql + "ORDER BY puesto ASC"
rs1.CursorType = 0
rs1.CursorLocation = 2
rs1.LockType = 1
rs1.Open()

rs1_numRows = 0
%>

por fabor alludenme soy tan solo un novato en esto...
gracias!!!!!
  #4 (permalink)  
Antiguo 09/12/2003, 15:29
 
Fecha de Ingreso: diciembre-2003
Mensajes: 5
Antigüedad: 20 años, 4 meses
Puntos: 0
olvide mencionar que el juego de registros se llama rs1, y al ejecutarlo tengo este error

Tipo de error:
Error de compilación de Microsoft VBScript (0x800A0401)
Se esperaba un final de instrucción
/automotriz_vespucio/resultado.asp, línea 27, columna 8
Dim sql as string
  #5 (permalink)  
Antiguo 09/12/2003, 16:53
Avatar de Allende  
Fecha de Ingreso: octubre-2003
Ubicación: La Habana
Mensajes: 54
Antigüedad: 20 años, 6 meses
Puntos: 0
mira lo otro que puedes hacer es usando LIKE, te quedaria de la siguiente forma el where


str = "where cod_precio like ''' & varPrecio & "%' and ano like '" & varAno & "%' and marca like'" & varMarca & "%'"

si llenas algo hara un LIKE con ese algo, lo que tienes qu etener claro que el like te sacara todos los que tengan la cadena que pueiste incluida, o sea, que debes garantizar que las cadenas que das a seleccionar no se incluyan unas a las otras. Si no entras el dato hara un LIKE con '%' esto te devuelve todos los datos.

salu2 y espero que resuelvas
  #6 (permalink)  
Antiguo 30/12/2003, 11:46
 
Fecha de Ingreso: diciembre-2003
Ubicación: Guadalajara, Jalisco
Mensajes: 1
Antigüedad: 20 años, 3 meses
Puntos: 0
Necesito una asesoria rápida

Me pueden explicar de favor como puedo pasar como parámetro una clausula completa WHERE a un procedimiento almacenado y como puedo hacer que el procedimiento lo interprete corretacmente

Gracias
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 18:21.