Fórum Filtrar dados da dbgrid #428614

12/11/2012

0

Ola pessoal,

Sei que tem um monte de posts sobre este assunto,
mas sabem que projetos diferentes, não concegui adaptar nenhum para o meu,

tenho um projeto bem simples que criei para isso, para que eu possa entender como funciona,

sabem que usar comandos de pesquisa acaba deixando lento quando tem bastante registros na tabela,

Gostaria entender como funciona os filtros,

tenho uma tabela no sqlserver, conectada ao delphi atraves de um tadoconnection
tem uma adoquery para inserir/deletar/alterar, etc.., onde tem o comando select * from
uso um datasource para exibir os dados da tabela em um dbgrid com o comando select * from
toda essa conexão esta dentro de um data module, o dbgrid no form1 com os botões, tedits, etc..

TEM ALGUMA ROTINA QUE FILTRE ESSES DADOS DO DBGRID QUANDO DIGITO ALGO EM UMA DAS TEDIT, SEM QUE FIQUE LENTO QUANDO TENHO MUITOS DADOS NA TABELA??


Desde ja agradeço muito!!!
Sikineli Strike

Sikineli Strike

Responder

Posts

12/11/2012

Luiz Menin

Você poderia utilizar parametros em sua consulta SQL ao invés do *.
Outra alternativa seria utilizar os filtros do ClientDataSet. Ele é muito rápido pois consulta dados qua já estão em memória.
Responder

Gostei + 0

12/11/2012

Luiz Menin

Um exemplo de filtro seria:

// Se for um valor em STR
ClientDataSet1.Filter := 'CAMPO_TABELA = ' + QuotedStr(edtValor.txt);

// Se for um valor INT
ClientDataSet1.Filter := 'CAMPO_TABELA = ' + IntToStr(edtValor.txt);

// Ativa filtro
ClientDataSet1.Filtered := True;
Responder

Gostei + 0

12/11/2012

Sikineli Strike

Um exemplo de filtro seria:

// Se for um valor em STR
ClientDataSet1.Filter := 'CAMPO_TABELA = ' + QuotedStr(edtValor.txt);

// Se for um valor INT
ClientDataSet1.Filter := 'CAMPO_TABELA = ' + IntToStr(edtValor.txt);

// Ativa filtro
ClientDataSet1.Filtered := True;


me desculpe amigo,

mas é o seguinte, coloco essa rotina na tedit, ou em um botão?
se for ele não encontra o dataset, dai tenho que cria-lo?
é pq é bem diferente do vb to bem perdido.

obrigado pela ajuda
Responder

Gostei + 0

12/11/2012

Luiz Menin

Sim, você deve colocar essa rotina em um botão.
Pesquise sobre o componente TClientDataSet e adicione ao seu projeto. Ele é muito útil nesses casos.
Responder

Gostei + 0

13/11/2012

Luiz Menin

Conseguiu fazer o filtro funcionar?
Responder

Gostei + 0

14/11/2012

Sikineli Strike

Conseguiu fazer o filtro funcionar?


eu estava procurando sobre o dataset,
mas dai baixei o sqlfull2012,
para tentar conectar com o unidac,

mas eu uso o win7, dai quando tento instalar o sql da erro,
"não foi possivel carregar arquivo ou assembly'system.version=4.0.0.0. etc etc etc e tal....."
diretório \appdata\local\microsoft_corporation\landingpage.exe_strongname_rypccglaxmt4nhllj5z3thycltsvyyx\10.0.0.0\userconfig

O .NET Framework 4.0 ta blza ja tentei reparar e nada.

será que concigo uma solução para isso??

Valeu!!
Responder

Gostei + 0

14/11/2012

Sikineli Strike

Ainda por cima descobri que nem é o 2012
"gato por lebre"kkkkk
é o 2008 r2.
Responder

Gostei + 0

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

Aceitar