Filtrar dados da dbgrid
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!!!
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
Curtidas 0
Respostas
Luiz Menin
12/11/2012
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.
Outra alternativa seria utilizar os filtros do ClientDataSet. Ele é muito rápido pois consulta dados qua já estão em memória.
GOSTEI 0
Luiz Menin
12/11/2012
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;
GOSTEI 0
Sikineli Strike
12/11/2012
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
GOSTEI 0
Luiz Menin
12/11/2012
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.
Pesquise sobre o componente TClientDataSet e adicione ao seu projeto. Ele é muito útil nesses casos.
GOSTEI 0
Luiz Menin
12/11/2012
Conseguiu fazer o filtro funcionar?
GOSTEI 0
Sikineli Strike
12/11/2012
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!!
GOSTEI 0
Sikineli Strike
12/11/2012
Ainda por cima descobri que nem é o 2012
"gato por lebre"kkkkk
é o 2008 r2.
"gato por lebre"kkkkk
é o 2008 r2.
GOSTEI 0