Tema: Biolab 1.0
Ver Mensaje Individual
  #69  
Antiguo 12-08-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Reputación: 19
Chris Va por buen camino
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       //Mejor busqueda pero no admite acentos
              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 //Busque ignorando los acentos
        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
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita