Pesquisa (Query) no Firebird

16/06/2004

0

Amigos,

Tenho uma tabela chamada [color=red:6edcc34c40]Pessoas[/color:6edcc34c40] e existe nela um campo chamado [color=green:6edcc34c40]Nome[/color:6edcc34c40] como eu faço para assim que o usuário vai escrevendo no edit ele va pesquisando no campo nome o texto digitado?

Uso Firebird e tenho os seguintes componentes:

[b:6edcc34c40]MDODatabase
MDOTransaction
MDODataset
MDoMisc
DataSource
MDOQuery[/b:6edcc34c40]

Como eu faria essa query funcionar ? Preciso de algum componente a mais , como funcionaria ?


Valeu


Koringa

Koringa

Responder

Posts

16/06/2004

Vinicius2k

koringa,

se vc quiser ir pesquisando (localizando) sem filtro use o método locate, mas é lento em tabelas grandes... algo assim :
Query.Locate(´NOME´,Edit1.Text,[LoPartialKey]);


mas se o que vc quer é um filtro na tabela, vc pode fazer a assim :
instrução SQL da Query :
select * from PESSOAS where NOME like :pnome

e no OnChange do Edit :
with Query do
  begin
    Close;
    ParamByName(´pnome´).AsString:= ´¬´ + Edit1.Text + ´¬´
    Open;
  end;

o uso dos [b:859f48168d]¬[/b:859f48168d] é o indicador de qual parte não importa no filtro... ¬Texto¬ -> Conté o Texto em quaquer parte , ¬Texto -> Terminado com o texto e Texto¬ -> iniciado com o Texto...
note que isso também é lento em tabelas um pouco maiores... o ideal é que vc faça isso no click de um botão ´pesquisar´, por exemplo...

Espero ter ajudado...
T+


Responder

17/06/2004

Koringa

koringa, se vc quiser ir pesquisando (localizando) sem filtro use o método locate, mas é lento em tabelas grandes... algo assim :
Query.Locate(´NOME´,Edit1.Text,[LoPartialKey]);
mas se o que vc quer é um filtro na tabela, vc pode fazer a assim : instrução SQL da Query :
select * from PESSOAS where NOME like :pnome
e no OnChange do Edit :
with Query do
  begin
    Close;
    ParamByName(´pnome´).AsString:= ´¬´ + Edit1.Text + ´¬´
    Open;
  end;
o uso dos [b:7c4b335112]¬[/b:7c4b335112] é o indicador de qual parte não importa no filtro... ¬Texto¬ -> Conté o Texto em quaquer parte , ¬Texto -> Terminado com o texto e Texto¬ -> iniciado com o Texto... note que isso também é lento em tabelas um pouco maiores... o ideal é que vc faça isso no click de um botão ´pesquisar´, por exemplo... Espero ter ajudado... T+


Se eu tento o [b:7c4b335112]
Query.Locate(´NOME´,Edit1.Text,[LoPartialKey]);
[/b:7c4b335112] da erro no [color=red:7c4b335112]LoPartialKey[/color:7c4b335112] da erro como se não estivesse declarado e ja chegou a aparecer incompatible types LoPartialKey and integer;


Responder

17/06/2004

Vinicius2k

Perdõe-me... acresceste à lista de uses a unit [b:6e6a01c5a5]DB[/b:6e6a01c5a5], que é aonde se encontra a definição do tipo TLocateOptions...
T+


Responder

17/06/2004

Koringa

Perdõe-me... acresceste à lista de uses a unit [b:d54dbc1c09]DB[/b:d54dbc1c09], que é aonde se encontra a definição do tipo TLocateOptions... T+


Te agradeco vinicius é isso ai :D


Responder

03/08/2004

Marfred

Olá kra !!


poderia me ajudar a usar o MDO com Firebird ? (uso delphi 7 e fireebird 1.5).....


Eu to conectado usando o mdodatabase... conectei e até aí normal...

no datamodule eu tenho o mdo database, mdotransaction e mdoquerys...

mas o q eu uso pra fazer as manutencoes nas tabelas ?!

eu quero usar mdoquery... como faco para os dbcontrols ficarem ativos para insercoes e alteracoes ? tenho q colocar um mdoupdatesql para cada query ?!

pra q serve o mdodataset ?!!!

qual deles tem a melhor performance ?

Falow mocada !!!


Responder

03/08/2004

Macario

Amigos, Tenho uma tabela chamada [color=red:28d306198b]Pessoas[/color:28d306198b] e existe nela um campo chamado [color=green:28d306198b]Nome[/color:28d306198b] como eu faço para assim que o usuário vai escrevendo no edit ele va pesquisando no campo nome o texto digitado?


Ola programador, boa tarde 8) .

Apenas fazendo uma sugestão, escolha este metodo

[color=red:28d306198b]select * from PESSOAS where NOME like :pnome[/color:28d306198b]



mas sem fazer pelo Onchange, a nao ser que voce tenha uma infra-estrutura de rede muito boa (ou poucos terminais).
pois isso aumentaria o trafego na rede.

:roll:


Responder

04/10/2023

Endel

EU GOSTARIA DE SABER .........

Se eu posso fazer uma pergunta aqui sobre o assunto , porem do meu caso em especial ?
Responder

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

Aceitar