Preciso de ajuda com uma busca.
Tenho um formulário de cadastro de clientes. Ao clicar em ´Localizar´ o seguinte código é executado:
Dm.tbClientes.IndexName:=´idxTelefone´;
FmBuscaCli.ShowModal;
Dm.tbClientes.IndexName:=´´;
[b:76d578e152]O form ´FmBuscaCli´ tem o seguinte código:[/b:76d578e152]
procedure TFmBuscaCli.Edit1Change(Sender: TObject);
begin
dm.TbClientes.FindNearest([edit1.text]);
end;
procedure TFmBuscaCli.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=38 then dm.TbClientes.Prior;
if Key=40 then dm.TbClientes.Next;
end;
procedure TFmBuscaCli.BitBtn1Click(Sender: TObject);
begin
Close;
end;
procedure TFmBuscaCli.FormCreate(Sender: TObject);
var hfechar: THANDLE;
hMenuFechar: HMenu;
begin
hfechar := Self.Handle;
if (hfechar <> 0) then
begin
hMenuFechar := GetSystemMenu(hfechar, FALSE);
if (hMenuFechar <> 0) then
DeleteMenu(hMenuFechar, SC_CLOSE, MF_BYCOMMAND);
end;
end;
procedure TFmBuscaCli.FormShow(Sender: TObject);
begin
edit1.Clear;
Edit1.SetFocus
end;
end.
Essa codificação faz uma busca na tabela de clientes pelo Campo ´Telefone´. Como mudar a busca descrita acima para o campo ´Nome´? Não posso modificar muito esse código, pois o mesmo interage com demais forms.
Sou iniciante em Delphi, desde já eu agradeço!
Dm.tbClientes.IndexName:=´idxTelefone´;
FmBuscaCli.ShowModal;
Dm.tbClientes.IndexName:=´´;
[b:76d578e152]O form ´FmBuscaCli´ tem o seguinte código:[/b:76d578e152]
procedure TFmBuscaCli.Edit1Change(Sender: TObject);
begin
dm.TbClientes.FindNearest([edit1.text]);
end;
procedure TFmBuscaCli.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=38 then dm.TbClientes.Prior;
if Key=40 then dm.TbClientes.Next;
end;
procedure TFmBuscaCli.BitBtn1Click(Sender: TObject);
begin
Close;
end;
procedure TFmBuscaCli.FormCreate(Sender: TObject);
var hfechar: THANDLE;
hMenuFechar: HMenu;
begin
hfechar := Self.Handle;
if (hfechar <> 0) then
begin
hMenuFechar := GetSystemMenu(hfechar, FALSE);
if (hMenuFechar <> 0) then
DeleteMenu(hMenuFechar, SC_CLOSE, MF_BYCOMMAND);
end;
end;
procedure TFmBuscaCli.FormShow(Sender: TObject);
begin
edit1.Clear;
Edit1.SetFocus
end;
end.
Essa codificação faz uma busca na tabela de clientes pelo Campo ´Telefone´. Como mudar a busca descrita acima para o campo ´Nome´? Não posso modificar muito esse código, pois o mesmo interage com demais forms.
Sou iniciante em Delphi, desde já eu agradeço!
Flaviolrf
Curtidas 0
Respostas
Marcelo.c
24/09/2003
Olhando rapidamente e se me lembro bem, basta trocar o índice.
Você pode criar um botão e no evento Onclick:
Dm.tbClientes.IndexName:=´idxNome´;
Você pode criar um botão e no evento Onclick:
Dm.tbClientes.IndexName:=´idxNome´;
GOSTEI 0
Flaviolrf
24/09/2003
Já tentei, o erro gerado diz que o Índice não existe! Como criar o Indice então?
GOSTEI 0
Marcelo.c
24/09/2003
Então, abra sua tabela através do DataBase Desktop e crie um índice secundário.
Acabou de me ocorrer que talvez você possa utilizar a propriedade IndexFieldNames diretamente na TTable ou TQuery, eliminando a necessidade de criação de um índice no arquivo.
Exemplo:
No evento Onclick de um botão:
Table.IndexFieldNames:=´Nome´;
Experimente, acho que pode funcionar, pelo menos para ordenação com clique no título coluna do DBGrid funciona.
Se não funcionar, a saída será realmente criar o índice.
Estamos aí...
Acabou de me ocorrer que talvez você possa utilizar a propriedade IndexFieldNames diretamente na TTable ou TQuery, eliminando a necessidade de criação de um índice no arquivo.
Exemplo:
No evento Onclick de um botão:
Table.IndexFieldNames:=´Nome´;
Experimente, acho que pode funcionar, pelo menos para ordenação com clique no título coluna do DBGrid funciona.
Se não funcionar, a saída será realmente criar o índice.
Estamos aí...
GOSTEI 0