Como fazer pesquisa incremental em Query?

08/04/2003

0

Boa Tarde companheiros...

vejam se podem me ajudar....

Tenho um form com um dbgrid que listava os dados de um table.
Agora mudei o dbgrid para mostrar dados de uma query.

Quando estava utilzando o table eu tinha um campo edit de busca incremental que conforme o usuario ia digitando as letras, o indicador da tabela ia localizando os registros mais próximos ao nome digitado.

Agora que mudei para a Query, o comando FindNearest que fazia a pesquisa incremental está dando um erro, indicando que a Query não possui esta propriedade.

Qual a propriedade que a query tem para eu fazer o mesmo procedimento de busca incremental que eu usava no table?


vale ressaltar que a linha de busca abaixo ficava no evento onchange do edit. vejam:


dtmDados.tblEmpresas.FindNearest([edtBuscaIncEmpBol.text]);



Me ajudem por favor.


Um grande abraço a todos....

Pablo


Pablo_lima

Pablo_lima

Responder

Posts

08/04/2003

Hhhhhh

Pablo,

a TQuery tem um método chamado [b:db3bd44b8d]Locate[/b:db3bd44b8d] que pode funcionar de forma parecida com o FindNearest da TTable.

Query1.Locate(´NOME do campo´, edit1.Text, [loPartialKey, loCaseInsensitive]);


[b:db3bd44b8d]- loPartialKey:[/b:db3bd44b8d] permite que a busca seja feita por apenas uma parte do campo desejado, ex. digito [b:db3bd44b8d]P[/b:db3bd44b8d] e posiciona no primeiro registro começado com essa letra.
[b:db3bd44b8d]- loCaseInsensitive:[/b:db3bd44b8d] permite que faça a busca indempendente de maiúscula e minúscula.


Responder

08/04/2003

Pablo_lima

Olá Lucas...


O comando que vc me passou para busca incremental em um query está apresentando um erro que não sei o que fazer para arrumar.

Veja:

[Error] U_OpcBoletosEmp.pas(40): Undeclared identifier: ´loPartialKey´
[Error] U_OpcBoletosEmp.pas(40): Undeclared identifier: ´loCaseInsensitive´
[Error] U_OpcBoletosEmp.pas(40): Incompatible types: ´TLocateOption´ and ´Integer´


Será algo que eu tenha que declarar na uses da unit do form?


Se puder me ajudar ficarei muito grato.


Um abraço.


Será que tenho que declarar alguma unit para utilizar este tipo de comando


Responder

08/04/2003

Marcelo.c

Se eu bem me lembro, você deve declarar VARIANTS no uses.


Responder

08/04/2003

Anonymous

O lucas ta correto, apenas declare DB e Tables se nao me engano!


Responder

08/04/2003

Pauloadriano

Pablo

dê uma olhada método Locate de uma customDataset no Help.

with qQuery do
Locate(´Company;Contact;Phone´, VarArrayOf([´Sight Diver´, ´P´, ´408-431-1000´]), [loPartialKey]);

O primeiro parâmetro é o nome do(s) campo(s) de pesquisa.
O segundo parâmetro é o valor a ser pesquisado.
O truque está no último parâmetro.
Use como o do exemplo que procura por valores não inteiramente coincidentes, ou seja, basta que a parte o valor encontrado possua uma parte coincidente!


Responder

08/04/2003

Dli

Olá,

Tenta usar uma query assim

Try
Screen.Cursor:=crSqlWait;
Query.Close;
Query.Sql.Clear;
Query.Sql.Add(´Select * from Tabela where campo like :pParametro ´);
Query.ParamByName(´pParametro´).AsString:=´¬´+edtBuscaIncEmpBol.text+´¬´;
if not(Query.prepared) then
Query.Prepare;
Query.Open;
Finally
Screen.Cursor:=crDefault;
end;

Pode ser que sirva.

um abraço.

dli


Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar