Fórum Consulta SQL #262008

14/12/2004

0

Gostaria de saber como faço para fazer uma consulta ´incremental´ ou seja o cara vai digitando no Edit e vai aparecendo no BDGrid conforme as letras que ele for digitando. Estou usando o banco InterBase e para fazer o conexao com o delphi estou usando os componentes da paleta DBExpress.


Agradeço desde já


_celo

_celo

Responder

Posts

15/12/2004

Peninha

Amigo _celo, é + ou - assim.
No evento OnkeyUp do seu edit use seguinte código:
   DmBasedados.IBTab_Cliente.Locate(´Nome_cliente´,varArrayOf([EdtPesquisa.Text]),[LopartialKey])


No evento OnkeyDown do seu form declare este código:
 If (Key = VK_RETURN) Then
      Perform(WM_NEXTDLGCTL,0,0);

Coloque na clausula Uses da Unit ´DB´ que é para vc poder usar o lopartialkey.
No primeiro código peguei um código completo do meu programa, é so vc adptar para o seu.
Qualquer coisa me envie um e-mail que eu te ajudo.
Erivan.


Responder

Gostei + 0

15/12/2004

Emersonclubedelphi

Amigo _celo, é + ou - assim. No evento OnkeyUp do seu edit use seguinte código:
   DmBasedados.IBTab_Cliente.Locate(´Nome_cliente´,varArrayOf([EdtPesquisa.Text]),[LopartialKey])
No evento OnkeyDown do seu form declare este código:
 If (Key = VK_RETURN) Then
      Perform(WM_NEXTDLGCTL,0,0);
Coloque na clausula Uses da Unit ´DB´ que é para vc poder usar o lopartialkey. No primeiro código peguei um código completo do meu programa, é so vc adptar para o seu. Qualquer coisa me envie um e-mail que eu te ajudo. Erivan.


Muito embora esta resposta esteja correta, não acho muito viável você fazer isso, pois terá um queda muito grande de performance na rede como um todo, principalmente se for banco de dados muito grande, o correto é vc usar sql e fazer uma pesquisar exata.

t+


Responder

Gostei + 0

15/12/2004

_celo

Está dando o seguinte erro:

SQLTable1: Cannot Perform this operation on a closed dataset.


Emerson como é que faço por SQL?


Responder

Gostei + 0

15/12/2004

Gandalf.nho

Você está com o Table aberto?


Responder

Gostei + 0

15/12/2004

_celo

Como faço para abri-lo?


Responder

Gostei + 0

15/12/2004

Gandalf.nho

SQLTable1.Active = True
ou
SQLTable1.Open;


Responder

Gostei + 0

15/12/2004

_celo

procedure TForm2.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
DM.SQLTable1.Locate(´Nome´,varArrayof([Edit1.Text]),[LopartialKey])
end;

procedure TForm2.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
If (Key = VK_RETURN) Then
Perform(WM_NEXTDLGCTL,0,0);
end;

procedure TForm2.Edit1Change(Sender: TObject);
begin
Consulta.Locate(´Nome´, Edit1.Text, [loCaseInsensitive, loPartialKey]);
end;


Onde Colocaria o SQLTable1.open ?


Responder

Gostei + 0

15/12/2004

Paulo_amorim

Olá

Antes de qualquer desses eventos. Talvez no FormShow...

Ou então, nesses eventos mesmo, com o código

if not Table.Active then
begin
try
  Table.Open;
except
  ShowMessage(´Oops´);
end;
end;



Responder

Gostei + 0

15/12/2004

Peninha

Paulo, gostei da sua dica irei trocar os códigos das minhas pesquisas.
Obrigado, Erivan.


Responder

Gostei + 0

16/12/2004

_celo

Já tentei de tudo q é jeito mas num to conseguindo. Fazer a pesquisa Incremental

No evento OnKeyUp coloquei esse procedimento:

begin
if not DM.SQLTable1.Active then
begin
try
DM.SQLTable1.Open;
DM.SQLTable1.Locate(´Nome´,varArrayof([EdtConsultaNome.Text]),[LopartialKey]);
except
ShowMessage(´Oops´);
end;
end;
end;

No evento OnKeyDown do form coloquei esse procedimento:

begin
If (Key = VK_RETURN) Then
Perform(WM_NEXTDLGCTL,0,0);
end;
end.

Mas na execucao na hora da que digito no Edt nao aparece nada. Estou ligando o DBGrid no DataSource, O DataSouce no ClienteDataSet o ClienteDataSet no DataSetProvider e o DataSetProviner no SQLQuery

O que tem de errado? Agradeço desde já Marcelo :(


Responder

Gostei + 0

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

Aceitar