Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   problemas con el espacio (https://www.clubdelphi.com/foros/showthread.php?t=850)

superhopi 27-05-2003 09:39:37

problemas con el espacio
 
Tengo un form que presenta los datos de una tabla en un dbgrid. Para reducir los registros tengo la opcion de hacer un filtrado de los datos, pero tengo un probema; cuando detecta un espacio me sale un mensaje de error diciendo que es un caracter no valido o que entra en conflicto con otros.
¿Cómo puedo hacer que el espacio me lo tenga en cuenta si quiero filtrar algo como "La casa"?

superhopi 27-05-2003 14:13:53

Parece que no sabe nadie como solucionar el problema ^_^
No pasa nada, que no busquen espacios.
:cool:

andres1569 27-05-2003 17:40:02

Hola:

Pues me extraña mucho. Lo he probado y no me da error. ¿Usas la propiedad Filer para filtrar? En ese caso la cadena debes ponerla entre comillas simples (supongo que lo has hecho así), si las pones dobles, al menos en mi caso, me advierte del error, algo así como "Invalid character ..." (quizás sea esto lo que te hace pensar que se refiere al espacio).

Un saludo

marcoszorrilla 27-05-2003 18:48:45

procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.Filter:='Company ='+QuotedStr(Edit1.Text);
Table1.Filtered:=True;
end;


Si muestras el código que utilizas para hacer el filtrado será más fácil ver donde pueda estar el fallo.

Un Saludo.

superhopi 28-05-2003 08:49:57

Mirad:
Lo que pretendo hacer es esto:

datos.obras.Filter:=comb+' like %' + conte.Text + '%';

datos--> modulo de datos
obras-->tabla
comb-->comb una variable tipo string que contiene el nombre del campo donde se quiere buscar
conte.text-->es el texto que se quiere buscar

Me sigue dando error si pongo:
- La casa
... sin embargo 'la','casa' o 'lacasa' no me da error.

Muchas gracias de antemano.

__cadetill 28-05-2003 09:55:05

Prueba con esto

Código:


var str : string;
begin
    str := '%' + conte.Text + '%';
    datos.obras.Filter:=comb+' like ' + QuotedStr(str);
end;

Espero te sirva

marcoszorrilla 28-05-2003 15:26:33

Los filtros no aceptan like ni aproximaciones, eso lo tienes que hacer mediante SQL.

O por el contrario utilizar el evento OnFilterRecord del TTable.

Aquí tienes un ejemplo, utilizando la tabla Customers del Alias DbDemos de Delphi.

Necesitas un TTable conectado a dicho alias y a la tabla Customers y un Edit en donde escribiras la cadena a filtrar.

procedure TForm1.Table1FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
var
sp, ss: ShortString;
begin

with DataSet do
begin
//En el Tedit escribimos la cadena a filtrar
sp :=AnsiUpperCase(EdMifiltro.Text);
ss := AnsiUpperCase(FieldByName('Country').asString);
Accept := POS(SP,SS)>0 ;

end;


end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.Filtered:=True;
end;


Un Saludo.

Bacterion 28-05-2003 15:29:53

El filtro del TClientDataset (vale, del TCustomX) si que admite likes... yo le hecharía un vistazo.


La franja horaria es GMT +2. Ahora son las 00:34:51.

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