José, gracias por compartir tu experiencia conmigo. La búsqueda en Biolab funciona más o menos a cómo lo estás haciendo tú. Pero solo con SQL, no con
Locate. En el código que compartiste:
Código Delphi
[-]IBDContactos.Locate(RemoveAcentos(UpperCase('EMPRESA')),
RemoveAcentos(UpperCase(edit1.Text)),
[ loCaseInsensitive,loPartialKey]);
Tienes dos problemas, uno de ellos es que no estás quitando los acentos al valor del campo, sino a una cadena constante (
'EMPRESA'). Lo que estás haciendo es solo quitarle los acentos al
al nombre del campo "EMPRESA". En tu caso creo que
Locate no te sirve, talvez un código así te puede ayudar mejor:
Código Delphi
[-]begin
if Edit1.Text<>'' then
begin
if CheckBox1.Checked=false then
begin IBDContactos.Active:=False;
IBDContactos.SelectSQL.Clear;
IBDContactos.SelectSQL.Add('select * from CONTACTOS WHERE UPPER (EMPRESA) LIKE '+QuotedStr('%'+UpperCase(Edit1.Text)+'%'));
IBDContactos.Active:=True;
end
else
with IBDContactos do try
DisableControls;
First;
while not Eof do
if AnsiPos(RemoveAcentos(AnsiLowerCase(edit1.Text))
RemoveAcentos(AnsiLowerCase(FieldByName('empresa').AsString))) then
Break
else
Next;
finally
EnableControls;
end;
end;
Saludos,
Chris