Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-04-2007
pelaorb68 pelaorb68 is offline
Miembro
 
Registrado: oct 2005
Posts: 32
Poder: 0
pelaorb68 Va por buen camino
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,
Responder Con Cita
  #2  
Antiguo 16-04-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 16-04-2007
pelaorb68 pelaorb68 is offline
Miembro
 
Registrado: oct 2005
Posts: 32
Poder: 0
pelaorb68 Va por buen camino
Disculpa Caral, pero no entiendo tu respuesta.....
Responder Con Cita
  #4  
Antiguo 16-04-2007
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
no tendras que hacer un cast en la instruccion SQL para que te convierta el campo de numerico a cadena?
Responder Con Cita
  #5  
Antiguo 16-04-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 16-04-2007
pelaorb68 pelaorb68 is offline
Miembro
 
Registrado: oct 2005
Posts: 32
Poder: 0
pelaorb68 Va por buen camino
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
Responder Con Cita
  #7  
Antiguo 17-04-2007
pelaorb68 pelaorb68 is offline
Miembro
 
Registrado: oct 2005
Posts: 32
Poder: 0
pelaorb68 Va por buen camino
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,
Responder Con Cita
  #8  
Antiguo 17-04-2007
pelaorb68 pelaorb68 is offline
Miembro
 
Registrado: oct 2005
Posts: 32
Poder: 0
pelaorb68 Va por buen camino
Perdón...el cast "es para los que son numéricos"......
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con Filter y EOF usando TTable El_Raso Conexión con bases de datos 0 20-03-2007 19:35:35
problema de logica con filter y ciclos vroa74 Conexión con bases de datos 2 07-03-2007 22:46:47
Problema con Filter en RxMemoryData agustibaldo Tablas planas 4 09-02-2007 16:04:10
problema con Filter en paradox seken Conexión con bases de datos 8 13-09-2004 23:04:16
problema con filter superhopi Varios 9 05-06-2003 13:52:45


La franja horaria es GMT +2. Ahora son las 10:59:26.


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