Fórum Pesquisar somente nos registros que aparecem no dbgrid #367622

09/01/2009

0

Olá Pessoal,

Como faço para ao clicar numa coluna do dbgrid, ter como fazer uma consulta somente sobre os dados que estão aparecendo no dbgrid e nessa coluna? Por exemplo, tenho uma coluna onde aparece o campo USUARIO de uma tabela, e no grid está aparecendo digamos 30 registros (30 linhas). Como faço para ao clicar em uma das linhas na coluna USUARIO aparecer uma janela onde o usuario pode fazer uma consulta pelo nome do usuario somente ness30 registros (30 linhas que estão aparecendo no grid)? Não sei se deu para entender.

Luiz


L_carlos

L_carlos

Responder

Posts

09/01/2009

Woinch

Não está muito claro. Você quer clicar no título de alguma coluna? Onde especificamente? Um clique? Dois cliques? Você quer filtrar o resultado daquele grid ou quer montar o resultado da busca em um outro grid?

Pode explicar melhor?


Responder

Gostei + 0

09/01/2009

L_carlos

Pode ser um clique na coluna (não seria no titulo da coluna, seria direto na coluna no grid), e abriria uma janela para pesquisar nos registros dessa coluna que estão no grid (somente os que estão no grid), e o resultado apareceria no mesmo grid.

Luiz


Responder

Gostei + 0

12/01/2009

Woinch

Se seu Grid estiver vinculado a um DataSource, então tente colocar o código a seguir no evento OnCellClick do DBGrid:

with DBGrid1.DataSource.DataSet do
begin
  Filter   := Column.FieldName + ´ like ´´¬´ +
    InputBox(´Filtrar pela coluna ´ + Column.Title.Caption, ´Digite algo:´, ´´) + ´¬´´´;
  Filtered := True;
end; //with


Para remover o filtro basta utilizar o seguinte código:

Filtered := True;


Se não for bem isso que você queria basta postar novamente, espero que sirva pelo menos como exemplo.


Abraços...


Responder

Gostei + 0

13/01/2009

L_carlos

Olá Woinch. tentei usar o seu codigo mas está dando erro ao compilar:

UNDECLARED IDENTIFIER COLUMN

Tem certeza que esse codigo é valido?

Grato

Luiz


Responder

Gostei + 0

13/01/2009

L_carlos

Woinch, consegui usar o codigo, só que ele retorna no grid os mesmos registros que estavam antes da pesquisa.

Luiz


Responder

Gostei + 0

16/01/2009

Woinch

Amigo, o que esse código faz é filtrar com o que foi digitado tudo o que você tiver no DataSet pela coluna que ele capturar ao efetuar o clique no Grid. Quando você clica no Grid e aparece uma janela de Dialogo, você digitou o que?


Responder

Gostei + 0

18/01/2009

Pestana_

Não sei se entendi, mas você não esta querendo um relacionamento mestre-detalhe?

Ao clicar no registro no dbGrid retornar todos os detalhes?


Responder

Gostei + 0

22/01/2009

L_carlos

Não consegui, tentei fazer como o cologa Woinch colocou abaixo mas apos digitar a que desejo pesquisar o grid mostra exatamente o que estava mostrando antes, não filtra pelo que pedi.

with gridagenda.DataSource.DataSet do
begin
Filter := Column.FieldName + ´ =´ +
InputBox(´Filtrar pela coluna ´ + Column.Title.Caption, ´Digite algo:´, ´´) + ´¬´´´;
Filtered := True;
end; //with

o meu grid está com uma query ligada ao datasource, não sei se isso pode impedir que o filtro acima funcione.

Luiz

Luiz


Responder

Gostei + 0

23/01/2009

Leonardo_age

Amigo, tá difícil de entender.. rs

Vamos fazer o seguinte, informa quais os dados e tabelas que você está manipulando para que possamos tentar trocar experiência.


Abraços


Responder

Gostei + 0

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

Aceitar