Ver Mensaje Individual
  #4  
Antiguo 26-11-2015
d3nz1g d3nz1g is offline
Miembro
NULL
 
Registrado: jun 2012
Posts: 10
Reputación: 0
d3nz1g Va por buen camino
Posible solución

Saludos,

Se que este hilo tiene bastante tiempo sin actividad pero tope con el mismo problema y buscando un poco más encontré una posible solución:

Para filtrar un CDS (ClientDataSet) existen 2 posibilidades: usar la propiedad filter del CDS, o utilizar un evento personalizado para la propiedad OnFilterRecord, de manera que este sea el criterio que se utilice para evaluar los registros del CDS. Con esta última opción, al habilitar la propiedad filtro, se filtrarán aquellos registros que cumplan con las propiedades dadas.

Por ejemplo:

Código Delphi [-]
procedure TFormConsultaActividades.CDSFilterRecord(DataSet: TDataSet;var Accept: Boolean);
begin
  Accept := Pos(AnsiUpperCase('ó'),AnsiUpperCase(ClientDataSet.FieldByName('DESCRIPCION').asString)) > 0;
end;

Con el código anterior, el filtro dejaría accesibles todos los registros que posean la letra o tildada:

Cita:
Aplicacion
Aplicación
Hormiga
Colón
Restauración
Filtro
Armería
En el caso del requerimiento original que indicaba Josepo (que tome en cuenta tanto hileras tildadas como sin tilde) me parece que simplemente habría que ajustar el código del evento OnFilterRecord para que sustituya aquellos caracteres tildados en ambas partes antes de realizar la comparación de valores.

PD: Probado con Delphi 2010.

Saludos!

Última edición por Casimiro Notevi fecha: 26-11-2015 a las 23:56:14.
Responder Con Cita