Fórum Como selecionar no dbgrid de acordo com a letra digitada? #334134
04/12/2006
0
Gostaria de saber se existe algum jeito de quando o usuario digitar um caractere o dbgrid, buscar os registros que iniciam com essa letra digitada. O dbgrid ja esta ordenado por ordem alfabetica.
Eduarno
Curtir tópico
+ 0
Responder
Posts
04/12/2006
Facc
Gostaria de saber se existe algum jeito de quando o usuario digitar um caractere o dbgrid, buscar os registros que iniciam com essa letra digitada. O dbgrid ja esta ordenado por ordem alfabetica.
SELECT * FROM TABELA WHERE CAMPO LIKE ´¬´+ QuotedSTR( EDIT.TEXT) + ´¬´
Não testei mas seria algo parecido
Responder
Gostei + 0
04/12/2006
Adriano_servitec
[quote:05b4da9aee=´eduarno´]Gostaria de saber se existe algum jeito de quando o usuario digitar um caractere o dbgrid, buscar os registros que iniciam com essa letra digitada. O dbgrid ja esta ordenado por ordem alfabetica.
SELECT * FROM TABELA WHERE CAMPO LIKE ´¬´+ QuotedSTR( EDIT.TEXT) + ´¬´
Não testei mas seria algo parecido[/quote:05b4da9aee]
Bom neste caso vc precisa de um edit para digitar a letra.
Agora se vc prefere ir digitando ´No Nada´..rsrsrs pode fazer assim
var
Form1: TForm1;
[b:05b4da9aee]sPesquisa : String;[/b:05b4da9aee]//Declare esta variavel
e no evento onKeyPress do dbgrid
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char); begin if key in [´A´..´Z´,32,´a´..´z´] THEN sPesquisa := sPesquisa + key; if not TDBGrid(Sender).Datasource.Dataset.Locate(´associado´,sPesquisa,[loPartialKey,loCaseInsensitive]) then sPesquisa := ´´; end;
Se vc quiser usar para pesquisa dois edits um para que começa com letra tal e outro que termina com letra tal tipo de B a H por exemplo e aparecer somente iniciais que começam com estas letras eu inventei um codigo assim
procedure TFConta.Button9Click(Sender: TObject);
begin
with dm.qtbcontalan do begin
sql.clear;
sql.add(´SELECT * from tbconta WHERE (nomeconta >= :nomeINI and nomeconta <= :nomeFIM) or (nomeconta like :nomeFIM) order by nomeconta´);
Params[0].Value := ANSIUPPERCASE(EDIT6.TEXT);
Params[1].Value := ANSIUPPERCASE(EDIT7.TEXT);
Params[1].Value := ANSIUPPERCASE(EDIT7.TEXT+´¬´);
//*********codigo usando o substring tambem esta correto**********
{sql.clear;
sql.add(´select * from tbconta´);
SQL.ADD(´where substring(nomeconta from 1 for 1) between ´ + quotedstr(Edit6.Text) +´ and ´+quotedstr(Edit7.Text)+ ´´);}
Open;
end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)