FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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. |
#2
|
||||
|
||||
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. |
#3
|
|||
|
|||
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 |
#4
|
||||
|
||||
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. |
#5
|
||||
|
||||
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. |
#6
|
|||
|
|||
Prueba con esto
Código:
var str : string; begin str := '%' + conte.Text + '%'; datos.obras.Filter:=comb+' like ' + QuotedStr(str); end; |
#7
|
||||
|
||||
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. |
#8
|
|||
|
|||
El filtro del TClientDataset (vale, del TCustomX) si que admite likes... yo le hecharía un vistazo.
|
|
|
|