Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   como cambiar el IndexName de una tabla? (https://www.clubdelphi.com/foros/showthread.php?t=69062)

marcos_0586 23-07-2010 17:45:58

como cambiar el IndexName de una tabla?
 
Buenas, les comento que tengo edit en el cual quiero que a medida que voy escribiendo me aparezca las palabras una onda buscador de google estoy tratando de usar FindNearest de la forma que encontré en un hilo de este foro de años anteriores que lo pongo aquí abajo y cuando ejecuto el programa y entro al form correspondiente me dice que el index no se encuentra pero... si existe en la tabla, este es el código que use , claro que le cambie los valores asignándole los reales de mi tabla pero la estructura es la misma, que esta mal???

procedure TForm1.FormActivate(Sender: TObject);

begin
Table1.DatabaseName := 'DBDemos';
Table1.TableName := 'Customer.db';
Table1.Active := True;
Table1.IndexName := 'ByCompany';
end;
procedure TForm1.Edit1Change(Sender: TObject);

begin
Table1.FindNearest([Edit1.Text]);
end;

PD: mi idea es tener tres RadioButton donde elegir el tipo de busqueda por nombre, apellido o categoria
en base a eso que cuando vaya ingresando las letras le vaya mostrando las coincidencias hasta encontrar la palabra que quiere escribir y luego que me muestre el o los datos en un DBGrid

cloayza 23-07-2010 18:08:06

Podria ser asi:

Deberias agregar un ComboBox el cual contendra los campos de indices.

Código Delphi [-]
procedure TForm1.FormActivate(Sender: TObject);
begin
      ComboBox1.Items.Clear;
      ComboBox1.Items.Add('Company');
      ComboBox1.Items.Add('CustNo');
      ComboBox1.Style:=csDropDownList;
      ComboBox1.ItemIndex:=0;
      
      Table1.DatabaseName := 'DBDemos';
      Table1.TableName := 'Customer.db';
      Table1.Active := True;
      Table1.IndexFieldNames := ComboBox1.Text;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
     Edit1.Text:='';
     Edit1.SetFocus;
     Table1.IndexFieldNames:=ComboBox1.Text;
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
     Table1.FindNearest([edit1.text]);
end;

Saludos

ecfisa 23-07-2010 22:28:04

Hola marcos.

Mirando tu código me parecío que no había nada erroneo en él; pero como dijiste que te daba
error reproduje literalmente tu código.
Agregué un DBGrid para visualizar y funciona perfectamente, posicionandose en los registros
de acuerdo a lo ingresado en el Edit.
Aclaro que 'Customer.db' está sin modificar, tál como viene con Delphi. (por si te orienta en algo).

En cuanto al uso de los RadioButton's, así como cualquier otro control que decidas usar, no creo que te dé
ningún problema, siempre que hayas declarado índices en la Tabla para las selecciones que hagas.
Es decir haya un índice por cada opción: Nombre, Apellido y Categoría.


Saludos.


La franja horaria es GMT +2. Ahora son las 22:34:12.

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