Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problemas con varios Parametros (https://www.clubdelphi.com/foros/showthread.php?t=12499)

Carlex 19-07-2004 03:59:49

Problemas con varios Parametros
 
Hola de nuevo :( :

Aqui con un problemilla de parametros, resulta q tengo un query que es alimentado por parametros 5, pero no todos iran desde delphi como logro que omita los en blanco y ejecute con los que se le manda? el query es algo asi:

SELECT P.N_CI, P.S_Nombre, P.S_ApPaterno, P.S_ApMaterno, P.F_FechaNac, P.S_Profesion, P.S_Domicilio, P.S_Telefono, P.S_OrigenPrest, D.S_DescEstDeuda, S.S_DescSector, P.N_Item, P.R_TotalGanado, P.N_Servicio
FROM T_Prestatario P, T_EstDeuda D, T_Sector S
WHERE P.N_Cod_EstDeuda = D.N_CodEstDeuda AND
P.N_CodSector = S.N_CodSector AND
(P.N_CI=:Param1 OR
P.S_ApPaterno= :Param2 OR
P.F_FechaNac= :Param3 OR
P.S_Profesion= :Param4 OR
P.S_OrigenPrest= :Param6 OR
P.N_Item= :Param7)

Cual es el error?

delphi.com.ar 19-07-2004 04:35:28

Cita:

Empezado por Carlex
...no todos iran desde delphi...

Los que no quieres pasar, asegúrate asignarle Null al Value.
Cita:

Empezado por Carlex
Cual es el error?

¿Da un error?

JoseQ 19-07-2004 13:13:08

ami me pasaba igual,la sentencia SQL no admitia los NULL, al final desisti, i como solo tenia k obtener un registro me decdante x Locate

Gydba 19-07-2004 13:39:49

Buenas,

Alguna vez me tope con el uso de parámetros opcionales en Firebird, si te interesa lo resolví con un coalesce (la función puede llamarse diferente según el motor que utilices, pero vale como idea):
http://www.clubdelphi.com/foros/showthread.php?t=9207

PD: Me quedó la duda de cuál era el error.
Saludos

Carlex 11-08-2004 07:05:36

En si no es un error sino que ocurre lo siguiente:

El usuario puede colocar su busqueda por apellido, profesion, carné, fecha de nac,etc y debera buscar solo los que cumplan las condiciones seleccionadas, y los demas parametros iran nulos.

Esto es una busqueda con filtros, o bueno la idea es esa.
Es decir si busco los con apellido perez, me busque solo esos.
Si busco los que apellidan perez y tienen la profesion profesor, me busque profesores con apellido perez.
Lo que obtengo como resultado con el query mencionado es 1ro los que apellidan perez y luego todos los que son profesores(y estos no apellidan perez).
Probe con And y or y no me soluciona, no se si se entiende. Como siempre muchas gracias por su tiempo y su ayuda

delphi.com.ar 11-08-2004 23:56:49

Si quieres mantener los parámetros, podrías hacer:
Código SQL [-]
SELECT 1 FROM TABLA
WHERE (ID = :pID OR :pID IS NULL)
AND (NOMBRE = :pNOMBRE OR :pNOMBRE IS NULL)
....

Saludos!

Carlex 13-08-2004 04:13:00

Desde ya muchas gracias por la respuesta, apezar de encontrar otra forma de hacerlo(mediante un armado del query con sql.add, con varios if para los diversos casos), pero prove tu consejo puse algo asi:

SELECT * FROM PRESTATARIOS
WHERE (CI = :Param1 OR :Param1 IS NULL)
AND (APELLIDO = :Param2 OR :Param2 IS NULL)

al definir el tipo de parametros me encontre con que habia 2 param1 y 2 param2
es decir duplicados los parametros, que hice mal? Desde ya muchas gracias, tu ayuda es de GRAN ayuda para mi y para todos :p

delphi.com.ar 13-08-2004 23:34:34

El editor de propiedad te muestra dos parámetros, pero al modificar los valores de uno se cambian los dos, porque seguramente los referencia por el nombre, así que solo tendrías que asignar uno.

Saludos!


La franja horaria es GMT +2. Ahora son las 22:23:46.

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