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

Eduarno

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

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

Aceitar