Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consulta en SQL con muchos parámetros (https://www.clubdelphi.com/foros/showthread.php?t=20057)

Aprendiendo 05-04-2005 01:53:15

Consulta en SQL con muchos parámetros
 
Hola a tod@s.

Me explico con respecto al título. Estoy diseñando una aplicación para una inmobiliaria, todo me funciona perfectamente, pero ha llegado el momento en el cual tengo que mostrar de todos los inmuebles que haya en la tabla principal sólo aquellos que se adecuen a las condicones que previamente el cliente haya marcado ó indicado.

Me explico mejor (zona del inmueble, número de baños, antiguedad, amueblado (si/no), luz (si/no), ascensor (si/no) y así hasta 22 comprobaciones).

¿Cómo podría diseñar una consulta para que me acepte todos estos parámetros? y no tener que comprobar uno por uno cual ha sido modificado.

Esperando una pronta respuesta por vuestra parte, reciban un cordial saludo... :) :cool: :)

jachguate 05-04-2005 02:09:29

Cita:

Empezado por Aprendiendo
¿Cómo podría diseñar una consulta para que me acepte todos estos parámetros? y no tener que comprobar uno por uno cual ha sido modificado.

:confused:
¿Podrias intentar explicarte de nuevo?
:confused:

Lepe 05-04-2005 11:20:52

¿Que Base de datos estas usando?, Que tipo de acceso, BDE, ADO...

Yo no me preocuparía de ver cual modifica el usuario, ya que eso implica más trabajo para ti, simplemente en el botón buscar, pones algo así:

Código Delphi [-]
  qry.close;
  qry.sql.text := ' select blah from blah where luz = :luz and aseos = :aseos ';
  qry.paramsbyname('luz').value := checkboxLuz.checked;
  qry.paramsbyname('aseos').value := spinedit1.value;
  if not qry.prepared then 
     qry.prepare;
  qry.open;

Espero que sea lo que necesitas, si no ... pues lo dicho por el compañero jachguate

Un saludo

Ing_Fajardo 05-04-2005 21:03:41

Te recomiendo si estas usando algun servidor SQL, que crees vistas, con eso reduces tu codigo y se hace mas rapido la consulta.

Ryu 05-04-2005 21:40:32

Solo es una observacion tal vez ayude
 
en el codigo que usas lape:

:cool: existe un error a mi parecer pues como el tomara los valores si para consultar si los estas asignando despues de consultar.
ademas para mí es mejor pasar parametros creando los parametros en ejecucion
me explico eje:
Código:

dm.dataset1.Parameters.AddParameter.Index:=0 ;
dm.dataset1.Parameters.Items[0].Name:='parametro';
dm.dataset1.Parameters.Items[0].DataType:=fttipo de datos;
dm.dataset1.Parameters.Items[0].Direction:=pdinput;
dm.dataset1.Parameters.ParamByName('pr').Value:=componente;
dm.dataset1.Close;
dm.dataset1.CommandText:='select * from 10rhacci where campo =:pr' dm.dataset1.Open;
dm.dataset.Parameters.Clear;


jachguate 05-04-2005 22:30:13

Cita:

Empezado por Ing_Fajardo
que crees vistas, con eso reduces tu codigo y se hace mas rapido la consulta.

Definitivamente se reduce el código, pero ¿realmente se hace mas rápida la consulta?

A primera vista, no veo en que ayudaria a mejorar el rendimiento el uso de vistas. Es mas con ciertos motores como SQL Server (al menos el 7) el uso de vistas en ciertas sentencias con varios joins puede llegar a tener un coste considerable de rendimiento en contraparte con las consultas directas a las tablas.... es un hecho que he comprobado recientemente y que confirma mis antiguas teorias sobre sqlserver... :D

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 16:52:45.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi