Ver Mensaje Individual
  #1  
Antiguo 27-09-2015
Kenobi Kenobi is offline
Miembro
 
Registrado: mar 2007
Posts: 191
Reputación: 18
Kenobi Va por buen camino
Desactivar parametro en query

Hola amigos, el problema que me ocupa es el siguiente, muchas veces creamos datamodulos y lo vamos llenando de componentes query para esto para aquellos etc. por ejemplo un query con todos los campos de la tabla, otro con la cuenta de todos a modo de resumen. bien en ese orden de ideas y pensando en que es bueno crear componentes reutilizables les expongo lo siguiente .....

supongamos que tengo una tabla proyectos que tiene los proyectos con sus categorias, luego para saber cuantos proyectos por categoria hay pues en un query :
Código Delphi [-]
select proyectos,categorias,count(categorias)
from proyectos
group by categorias

ahora bien suponiendo que quiero saber cuantas categorias tiene un proyecto en particular pues:
Código Delphi [-]
select proyectos,categorias,count(categorias)
from proyectos
where proyecto=:miParametro
group by categorias

bien hasta ahora son dos componentes query que hacen lo mismo pero uno con parametros y el otro no pues lo que quisiera hacer es uno solo que segun si le paso parametro o no me mande los resultados, ejemplo:

Código Delphi [-]

if length(miParametro)>1 then query.params.paramvalues['miParametro']:=miParametro
else 'ACA QUE NO TOME EN CUENTA EL PARAMETRO O UTILIZE UN COMODIN'  // miParametro:='%' o '*' "ninguno funciona"

en todo caso se que construyendo la consulta en tiempo de ejecucion:
Código Delphi [-]
query.slq.add('select * from tabla blabablabla....')
se podria pero me gustaria hacerlo en tiempo de diseño, o tambien quitando el paramentro del query a aplicandolo como filtro, pero esta opción (que ya la aplique) es mas lenta porque se trae todos los proyectos para luego filtrar y por otro lado si luego olvidas que la data esta filtrada y haces un insert puedes duplicar registros(pero esto es harina de otro costal)

ojala haya logrado explicarme y sean tan amables de orientarme en esto ....

Gracias
Responder Con Cita