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

como realizar una busqueda en base de datos con una variable con valor=undefined

Estas en el tema de como realizar una busqueda en base de datos con una variable con valor=undefined en el foro de ASP Clásico en Foros del Web. Hola amigos tengo una especie de buscador de anuncios y con tres campos a elegir: tipo,provincia y especie. Bueno imaginaros que los tres valores le ...
  #1 (permalink)  
Antiguo 28/07/2008, 10:38
 
Fecha de Ingreso: diciembre-2007
Mensajes: 179
Antigüedad: 16 años, 5 meses
Puntos: 0
como realizar una busqueda en base de datos con una variable con valor=undefined

Hola amigos tengo una especie de buscador de anuncios y con tres campos a elegir:
tipo,provincia y especie.

Bueno imaginaros que los tres valores le doy un valor concreto, entonces la busqueda me la hace perfecta (quitando el problema que tengo con el while que ya lo tengo preguntado por otro tema)
Pero por ej: Si quiero buscar de todos los tipos en una provincia y de una especie en concreto ya me salta mi querido error Se esperaba un objeto. Os muestro el pequeño codigo que he puesto para buscar de cualquier tipo y de una provincia y especie concreta:

codigo:

try{

if(empty(tipo)){
sql= "SELECT * FROM descripcion";
}
else{

sql="SELECT * FROM descripcion WHERE (tipo ="+tipo+" and provincia="+prov+" and categoria="+categoria+")";
}


conexion.BeginTrans();
result.Open(sql, conexion);

Pero no funciona como ya he dicho, una vez que salga ire creando las demas opciones por que evidentemente debo crear todas las combinaciones posibles ya que de los 3 campos se podra hacer una busqueda de todo sin prefijar nada, buscar en cualquier provincia, o de todas las especies.etc....

Espero que me haya entendido alguien y si existe alguna forma de hacerlo mas facil que con el if y else if pues estaria encantada de ver como. Gracias
  #2 (permalink)  
Antiguo 28/07/2008, 10:47
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
Respuesta: como realizar una busqueda en base de datos con una variable con valor=und

en que linea te da el error????

si colocas en tu sql valores absolutos si te deja entrar

SELECT * FROM descripcion WHERE (tipo ="+tipo+" and provincia="+prov+" and categoria="+categoria+"


sera que tus valores no son numéricos?
__________________
JuanRa Pérez
San Salvador, El Salvador
  #3 (permalink)  
Antiguo 28/07/2008, 11:20
 
Fecha de Ingreso: diciembre-2007
Mensajes: 179
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: como realizar una busqueda en base de datos con una variable con valor=und

El error que me da es por entrar en el cacth xk me da este error:

Error2:
Se esperaba un objeto

y te pongo el codigo entero para que veas que no entra en el try donde esta la sentencia o no ejecuta la sentencia

var tipo = Request.Form("buscatipo").Item;
var prov = Request.Form("buscaprov").Item;
var categoria = Request.Form("buscacategoria").Item;



try{
var cadenaConexion = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" +Server.MapPath("basedatos/bd.mdb");
var sql,result= Server.CreateObject("ADODB.Recordset");
}
catch (e){
Response.Write ("Error1:");
Response.Write ("<b>" + e.description + "</b>");
Response.End();
}
try{
conexion= Server.CreateObject("ADODB.Connection");//inicializamos la variable de conexion
conexion.open(cadenaConexion);//establecemos la comunicacion con la BD
}
catch(e){//tratamiento de posible errores
Response.Write ("<h2>Error1:</h2>");
Response.Write ("<b>" + e.description + "</b>");
Response.End();
}

try{

if(empty(tipo)){
sql= "SELECT * FROM descripcion";
}
else{

sql="SELECT * FROM descripcion WHERE (tipo ="+tipo+" and provincia="+prov+" and categoria="+categoria+")";
}


conexion.BeginTrans();
result.Open(sql, conexion);

if(result.eof)
{

Response.Write("No se ha encontrado ningun anuncio con esas caracteristicas en Animalandia.com")
Response.Write("<h4 align=center ><button onclick='history.back()'>Volver</button></h4>");
Response.End();
}
else
{


var titulo = result("titulo");
var cara = result("caracteristicas");
}
}
catch(e){//posible fallo en la BD
Response.Write ("<h2 align=center >Error2:</h2>");
Response.Write ("<b>" +e.description+ "</b>");
Response.Write("<h4 align=center ><button onclick='history.back()'>Volver</button></h4>");
Response.End();
}

Lo de negrita debe ser el error que me da.

La posibilidad de que no sean valores numericos no es por que los 3 campos son de tipo option y tienen su value y en la bd estan codificado por los numeros que son lo que quiero sacar.

No se a que te refieres con valores absolutos, que tengan valor concreto???
La busqueda me ha funcionado cuando del codigo de antes pongo lo siguiente :

sql="SELECT * FROM descripcion WHERE (tipo ="+tipo+" and provincia="+prov+" and categoria="+categoria+")";

Y no esta dentro del ningun if, es decir, busca con valores concretos. Espero que te haya respondido a lo que me pedias
  #4 (permalink)  
Antiguo 29/07/2008, 09:41
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: como realizar una busqueda en base de datos con una variable con valor=und

donde defines el objeto E????
  #5 (permalink)  
Antiguo 29/07/2008, 11:07
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Respuesta: como realizar una busqueda en base de datos con una variable con valor=und

El objeto e no se tiene que definir, se define intrínsecamente, este es un error handler válido en jscript:

Código:
<%@LANGUAGE="JavaScript"%>
<%
var rs;
try
{
	rs.Open
}
catch(e)
{
	Response.Write(e.description);
}
%>
Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 29/07/2008, 11:38
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: como realizar una busqueda en base de datos con una variable con valor=und

Código:
sql="SELECT * FROM descripcion WHERE (tipo ='"+tipo+"' and provincia='"+prov+"' and categoria='"+categoria+"')";
Hola, suponiendo que los campos tipo, provincia y categoria sean text, debés encerrar los valores que le pasas con comillas simples (')

Cita:
Bueno imaginaros que los tres valores le doy un valor concreto, entonces la busqueda me la hace perfecta
¿Me das un ejemplo de cómo quedaría la sentencia SQL cuando le das un valor concreto a los tres parámetros de búsqueda?
__________________
...___...
  #7 (permalink)  
Antiguo 29/07/2008, 14:13
 
Fecha de Ingreso: diciembre-2007
Mensajes: 179
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: como realizar una busqueda en base de datos con una variable con valor=und

La sentencia con valores concretos seria asi:

Código:
sql="SELECT * FROM descripcion WHERE (tipo = "+tipo+" and provincia = "+prov+" and especie = "+especie+")";
Los 3 campos son de tipo numerico por eso no tienen comillas simples.

Y el codigo hipotetico si quisiera buscar de todos los tipo pero en una provincia concreta y de una especie concreta yo lo he puesto asi:

Código:
if(empty(tipo)){
				sql= "SELECT * FROM descripcion";
				}
			else{
				
			sql="SELECT * FROM descripcion WHERE (tipo ="+tipo+" and provincia="+prov+" and categoria="+categoria+")";
			}
Pero asi no me salta el error se esperaba un objeto y no se como solucionarlo.

No se si el codigo que puso U_goldman es para saber mas detalladamente el error, pero creo que solo explica como se crea "e" y no tiene nada que ver con mi duda.
Bueno espero haber respondido para ver si me podeis ayudar una vez mas. Gracias
  #8 (permalink)  
Antiguo 29/07/2008, 14:17
 
Fecha de Ingreso: diciembre-2007
Mensajes: 179
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: como realizar una busqueda en base de datos con una variable con valor=und

Eso si si pongo valores concretos, es decir quito el if y el else y dejo solo la sentencia sql y funciona perfectamente. Asi que el problema debera estar en el codigo del if(empty ..... que puse anteriormente pero xk? nose.
  #9 (permalink)  
Antiguo 29/07/2008, 17:07
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Respuesta: como realizar una busqueda en base de datos con una variable con valor=und

Hay varios problemas:

1. Como evalúas los valores que llegan por querystring: Para JScript, la asignación variable = Request.QueryString("valor") no es en realidad un string sino un objeto, recuerda que el objeto request es una colección, lo que debes hacer es poner un paréntesis vacio para indicarle que es un string y solo un string el que debe recuperar:

Código:
var tipo = Request.QueryString("tipo")()
2. Una vez que es un string, puedes crear la condición:

Código:
if ( Request.QueryString("tipo") != "" )
{
      // Concatena a tu variable query las instrucciones necesarias.
}
3. Finalmente utiliza los manejadores de errores hasta que estes seguro que tu programa funciona y solamente para controlar excepciones no básicas, el utilizarlos sin asegurarte que estás haciendo lo correcto solo traerá problemas al no saber dónde ocurre el error ni su naturaleza.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #10 (permalink)  
Antiguo 30/07/2008, 17:21
 
Fecha de Ingreso: diciembre-2007
Mensajes: 179
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: como realizar una busqueda en base de datos con una variable con valor=und

Solucionado el problema. Mil 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 19:36.