![]() |
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=:pNombre and apellido=:pApellido and ... altura=:pAltura 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. |
puedes poner:
Código:
WHERE (IDUSUARIO = :IDUSUARIO OR :IDUSUARIO IS NULL)... |
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. |
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! |
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 |
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 |
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! |
| La franja horaria es GMT +2. Ahora son las 11:39:12. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi