Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema con Filter de ADO (https://www.clubdelphi.com/foros/showthread.php?t=42525)

pelaorb68 16-04-2007 21:12:38

Problema con Filter de ADO
 
Hola a todos, necesito si me pueden ayudar con mi problema:
Tengo un DBGrid con datos de un ADOQuery y quiero aplicar filtros según el campo del DBGrid. Para campos string no hay ningún problema, pero cuando intento hacerlo sobre un campo numérico, la aplicación me dá el error que no pudo abrir el filtro:

He aquí el Filtro:

Código Delphi [-]
  with DBGrilla do begin
    DataSource.DataSet.Filtered := False;
    DataSource.DataSet.Filter := Columns[cboBuscarEn.ItemIndex].FieldName +
                                 ' LIKE ''' + '%' + edtValorBuscar.Text + '%''';
    DataSource.DataSet.Filtered := (Trim(edtValorBuscar.Text)<>'');
  end;

Estuve leyendo la ayuda de MySql y dice que sí se puede usar like sobre campos numéricos, pero en la aplicación no resulta....

Agradeceré si me puedan ayudar....

Saludos,

Caral 16-04-2007 21:19:45

Hola
Para mi el error esta en el edit, que es texto, si quieres poner un campo numerico tienes que indiacrlo.
Código Delphi [-]
 with DBGrilla do begin
    DataSource.DataSet.Filtered := False;
    DataSource.DataSet.Filter := Columns[cboBuscarEn.ItemIndex].FieldName +
                                 ' LIKE ''' + '%' + IntToStr(edtValorBuscar.Text) + '%''';
    DataSource.DataSet.Filtered := (Trim(edtValorBuscar.Text)<>'');
  end;
En este caso un integer, floattostr, campo con decimales.
Saludos

pelaorb68 16-04-2007 22:22:06

Disculpa Caral, pero no entiendo tu respuesta.....

luisgutierrezb 16-04-2007 22:26:12

no tendras que hacer un cast en la instruccion SQL para que te convierta el campo de numerico a cadena?

Caral 16-04-2007 22:42:10

Hola
La verdad no se que es lo que no entiendes, te explico lo que entiendo yo y vemos si es lo mismo.
Entiendo que estas haciendo un filtro, con campos text no hay problemas, con campos numericos, si hay problemas.
Te puse una opcion para cambiar el tipo de text a numerico.
Otra es que no uses el like sino el >= que hace casi lo mismo.
Saludos

pelaorb68 16-04-2007 22:59:06

Ok Caral....este es mi problema: lo que tengo en la grilla es datos de Facturación: Nº Factura, Fecha, Cliente, Valores, Nº Orden, etc....
Tengo un combo que permite indicar por qué campo se desea filtrar información...y además un Edit para ingresar el valor que el usuario desea filtrar.
Si el usuario dice que desea filtrar por Nº de Factura y digita en el Edit 55, el filter queda: NumeroFactura LIKE '%55%' .... y si es por nombre queda NombCliente LIKE '%Juan%' , etc......

Lo que busco es que el filtro entregue los registros en los cuales el contenido del campo a filtrar contenga los valores a filtrar, es decir, todos aquellos donde el número de factura contenga 55 (2255, 2559, 5590, etc)

Ahora cuando ejecuto el filter por NumeroFactura(que es un campo de tipo numérico) no funciona y lanza el Error "No se puede abrir el filtro".......

Saludos

pelaorb68 17-04-2007 00:33:59

Disculpa luis, no había leido tu mensaje......Tienes toda la razón...se solucionó aplicando cast para los campos que no son numéricos....Apliqué cast al Nº de Factura y cuando hago el filtro, me entrega todos aquellos que contengan el valor especificado para filtrar. Ej: para 55 me entregó (2255, 2558, 5591, etc)

Muchas gracias por la ayuda y tambien gracias para Caral

Saludos,

pelaorb68 17-04-2007 00:34:52

Perdón...el cast "es para los que son numéricos"......


La franja horaria es GMT +2. Ahora son las 17:49:55.

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