Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-01-2004
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Consultas parametrizadas

Hola a todos, buen día
El caso es que quiero hacer una pregunta que no sé si encaja en este foro o no.
Habitualmente, cuando trabajo con BBDD, suelo presentar un form con los campos a filtrar, que se puede resumir así:
Select de personas -> TQuery Origen de los datos
edit de nombre
edit de apellido
edit de sexo,
edit de altura

Al pulsar seleccionar, monto la query con los filtros de los campos que se hayan seleccionado y presento el resultado en un grid.

Hasta aqui todo como siempre. Pero...

¿ Puedo hacer que la consulta siempre se escriba con los parámetros
select de personas where
nombre=Nombre and
apellido=Apellido and
...
altura=Altura

y que en ejecución aquellos parámetros que sean vacíos se obvien?

¿ Como puedo generar en ejecución los edits de los parámetros y luego montar la consulta ?
Mi objetivo es preparar un objeto o similar que me sirva para cualquier consulta.

El problema es más de diseño, creo, pero puede valer para cualquier consulta futura que se escriba o para cualquier programa.

Gracias por vuestra ayuda, y por haber llegado leyendo hasta este punto, que no es poco .

Un saludo
PD: No quiero dejar esta oportunidad para haceros partícipes de que esta página vale su peso en oro, y que es de lo mejor que he encontrado por la red.
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #2  
Antiguo 16-01-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
puedes poner:
Código:
WHERE (IDUSUARIO = :IDUSUARIO OR :IDUSUARIO IS NULL)...
Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 16-01-2004
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Está bien pero ...
¿ pero que el parámetro sea nulo no quiere decir que ese campo tiene que ser nulo ?
Lo que quiero decir - no sé si lo he explicado bien - es que si el usuario no introduce nada en el edit de un parámetro, este parámetro se obvie o no se filtre por él.

Espero la respuesta. Espero haberme expresado bien. Gracias.
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #4  
Antiguo 16-01-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Ok... si el usuario no ingresó nada en el Edit, debes asignarle null al valor del parámetro, entonces no filtrará por el campo en cuestión.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 16-01-2004
Descendents Descendents is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona
Posts: 396
Poder: 22
Descendents Va por buen camino
no te entiendo

¿No te sirve esto?

if trim(edit1.text) <> '' then sumo el edit1 a la consulta
else pues no le sumo el edit a la consulta

Saludos
__________________
La victoria tiene cien padres. La derrota es huérfana (Napoleón).
Responder Con Cita
  #6  
Antiguo 16-01-2004
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Lo probaré, gracias por la respuesta y por la celeridad.

Ahora me pregunto ¿ Habré estado haciendo el panoli todos estos años ? Pensaba que si ponia null al parámetro era para que filtrara por valor NULL de ese campo en cuestión !!! La juerga !.

Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #7  
Antiguo 16-01-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
La clave de esto es el OR digamos que queda así:
SI PARAMETRO = NULL O NULL = NULL
La primera condición no es válida pero si la segunda!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 21:35:59.


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
Copyright 1996-2007 Club Delphi