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 27-05-2003
Avatar de superhopi
superhopi superhopi is offline
Miembro
 
Registrado: may 2003
Ubicación: Valencia
Posts: 128
Poder: 22
superhopi Va por buen camino
Exclamation 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"?
__________________
Si me ves durmiendo no me despiertes, podría estar soñando que soy libre.
Responder Con Cita
  #2  
Antiguo 27-05-2003
Avatar de superhopi
superhopi superhopi is offline
Miembro
 
Registrado: may 2003
Ubicación: Valencia
Posts: 128
Poder: 22
superhopi Va por buen camino
Talking

Parece que no sabe nadie como solucionar el problema ^_^
No pasa nada, que no busquen espacios.
__________________
Si me ves durmiendo no me despiertes, podría estar soñando que soy libre.
Responder Con Cita
  #3  
Antiguo 27-05-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 22
andres1569 Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 27-05-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
Responder Con Cita
  #5  
Antiguo 28-05-2003
Avatar de superhopi
superhopi superhopi is offline
Miembro
 
Registrado: may 2003
Ubicación: Valencia
Posts: 128
Poder: 22
superhopi Va por buen camino
Smile

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.
__________________
Si me ves durmiendo no me despiertes, podría estar soñando que soy libre.
Responder Con Cita
  #6  
Antiguo 28-05-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Prueba con esto

Código:
 
var str : string;
begin
    str := '%' + conte.Text + '%';
    datos.obras.Filter:=comb+' like ' + QuotedStr(str);
end;
Espero te sirva
Responder Con Cita
  #7  
Antiguo 28-05-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
Responder Con Cita
  #8  
Antiguo 28-05-2003
Bacterion Bacterion is offline
Miembro
 
Registrado: may 2003
Posts: 91
Poder: 22
Bacterion Va por buen camino
El filtro del TClientDataset (vale, del TCustomX) si que admite likes... yo le hecharía un vistazo.
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


La franja horaria es GMT +2. Ahora son las 01:07: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
Copyright 1996-2007 Club Delphi