FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
ClientDataSets con parámetros, no funciona la consulta
Hola, necesito filtrar los datos desde el server para no traer todos. El usuario selecciona por cual campo buscar (esos serán los de los parámetros).
Trabajo con Delphi 7 + Fb 2.0 + IBX + ClientDatasets. Una IBQuery con parámetros, "Nombre" y "DNI" y su sentencia SQL es la encargada de recoger los datos. Tengo 2 campos por los que filtrar, uno u otro, excluyentes, cuando busco por DNI, al parámetro lo seteo con un valor inexistente de DNI, así solo traerá lo que encuentre por Nombre. Código:
//Aqui quiero que solo busque por nombre, pongo un DNI inexistente //como parámetro: procedure TfwndABMPac.RadioButton2Click(Sender: TObject); begin inherited; dmClientes.cdsClientes.Params.ParamByName('DNI').AsString := '####'; dmClientes.cdsClientes.Params.ParamByName('Nombre').AsString := (UpperCase(edBusq.Text))+'%'; end; Código:
select * from Clientes where (Upper(Nombre) Containing :Nombre) or (Upper(DNI) Containing :DNI) Código:
dmClientes.cdsClientes.Close; dmClientes.cdsClientes.FetchParams; dmClientes.cdsClientes.Open; Intenté sobreescribiendo con la consulta usando el CommandText del CDS y tampoco anduvo. Es todo, salutes! gracias por cualquier sugerencia. ro |
#2
|
|||
|
|||
Hola...
Podrías poner la consulta SQL? Saludos... |
#3
|
||||
|
||||
¡Hola!
Me parece que el problema está en el símbolo de porcentaje que agregas al nombre a buscar. Éste se utiliza con Like, pero para Containing no representa un carácter especial, así que el servidor está buscando aquellos nombres que contengan la cadena completa dada, incluyendo el símbolo de porcentaje. Y como los nombres suelen carecer de símbolos especiales, es normal que no arroje resultados (si es que a eso te refieres con «no veo cambios»). Por otro lado, puedes ahorrarte el "Upper" ya que al parecer Containing no discrimina entre mayúsculas y minúsculas. Un abrazo al 100%. Al González. |
#4
|
|||
|
|||
Exacto era eso, me di cuenta después, saqué el '%' y el Upper, ya que Containing es case insensitive.
Estuve buscando algo de información respecto a qué optimiza mejor las consultas si el uso del Like, Containg, etc. pero no encuentro nada relacionado con Firebird al respecto. Si alguien sabe de algun enlace se los agradezco. La consulta SQL es: Código:
select * from Clientes where ((Nombre Containing :Nombre) or (DNI Containing :DNI)) |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
ClientDataSets- Personalizar errores | rochi | Conexión con bases de datos | 0 | 03-05-2008 06:47:52 |
Esta consulta no me funciona | brandolin | Firebird e Interbase | 1 | 12-02-2007 17:29:08 |
Clientdatasets anidados con ADO | Johnny Q | Conexión con bases de datos | 4 | 03-11-2005 02:53:25 |
Update en Varios ClientDataSets. (Sincronización) | Listirrinin | Varios | 0 | 19-10-2004 10:49:02 |
Consulta Interbase con CGI No Funciona | ASAPLTDA | Internet | 2 | 26-06-2003 23:15:42 |
|