ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Auto filtro [ R E S O L V I I I I D O O O - Y E S !!! ]
Ir à página 1, 2, 3 ... 13, 14, 15  Próximo
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
marcellomm
Colaborador
Colaborador


Registrado: Segunda-Feira, 7 de Novembro de 2005
Mensagens: 1045

MensagemEnviada: Qua Abr 01, 2009 4:35 pm    Assunto: Auto filtro [ R E S O L V I I I I D O O O - Y E S !!! ] Responder com Citação

Coloquei um post aqui a algum tempo, para saber se algum desenvolvedor de componente aceitava como desafio criar um componente que funcionasse como o altofiltro do Excel. Como não apareceu nenhum interessado, eu resolvi parte do meu problema da seguinte maneira:

1 - Coloquei um combo carregado com os nomes das colunas
2 - Um dbLookUpComboBox que no evento enter abre uma query com as opções a filtrar de acordo com a coluna selecionada
3 - Uma query que filtra de acordo com as duas seleções anteriores. No entanto dessa forma não consigo filtrar por valores - que estão expressos em Currency - apresenta erro tipo incompatível.

Filé Wink

No entanto eu queria aprimorar mais esse filtro. Tipo re-filtrar a informação apresentada por um filtro anterior - mais especificamente refinar o filtro. Então pensei da seguinte forma:

1 - Seleciono uma célula no grid. Então por parametros envio para query a coluna e o valor da célula selecionada e daí ele filtra.
2- Se tivesse muita informação nesse filtro. Tornaria a selicionar outra célula - que não necessariamente precisaria ser da mesma coluna - e pediria outro filtro - refinando a pesquisa. E assim por diante. No entanto não tô conseguindo passar esses parametros - Nome da coluna e valor da célula - para a query. Será que alguém se habilita ? Rolling Eyes


Editado pela última vez por marcellomm em Qua Jul 15, 2009 2:14 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
marcellomm
Colaborador
Colaborador


Registrado: Segunda-Feira, 7 de Novembro de 2005
Mensagens: 1045

MensagemEnviada: Qui Abr 02, 2009 7:48 am    Assunto: Responder com Citação

up
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
abagattini
Mestre
Mestre


Registrado: Terça-Feira, 29 de Novembro de 2005
Mensagens: 758
Localização: Porto Alegre/RS

MensagemEnviada: Qui Abr 02, 2009 10:23 am    Assunto: Responder com Citação

Não sei se entendi direito, se não for isso desconsidere.
Eu particularmente uso assim:
Código:

var sWhere:String;
begin
  sWhere := '';

  if(Valor1 <> '')then
    sWhere := sWhere + '(Campo1 = ' + Valor1 + ') AND ';

  if(Valor2 <> '')then
    sWhere := sWhere + '(Campo2 = ' + Valor2 + ') AND ';

  ...

  if(sWhere <> '')then
    sWhere := 'WHERE ' + Copy(sWhere, 1, Length(Trim(sWhere)) - 3);

  Query.Close;
  Query.SQL.Text := 'SELECT ... ' + sWhere;
  Query.Open;

end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
marcellomm
Colaborador
Colaborador


Registrado: Segunda-Feira, 7 de Novembro de 2005
Mensagens: 1045

MensagemEnviada: Qui Abr 02, 2009 10:49 am    Assunto: Responder com Citação

abagattini escreveu:
Citação:
Não sei se entendi direito, se não for isso desconsidere.
Eu particularmente uso assim:
Código:

var sWhere:String;
begin
  sWhere := '';

  if(Valor1 <> '')then
    sWhere := sWhere + '(Campo1 = ' + Valor1 + ') AND ';

  if(Valor2 <> '')then
    sWhere := sWhere + '(Campo2 = ' + Valor2 + ') AND ';

  ...

  if(sWhere <> '')then
    sWhere := 'WHERE ' + Copy(sWhere, 1, Length(Trim(sWhere)) - 3);

  Query.Close;
  Query.SQL.Text := 'SELECT ... ' + sWhere;
  Query.Open;

end;
 


É a lógica é essa mesmo. Porém como é que eu faço para pegar os valores do Grid e enviar para as variáveis Valor1; Valor2; etc.?

Digamos que Valor1 seja o campo - coluna - a ser pesquisado. E que o meu cursor está sobre o nome JOÃO DAS COUVES. Então - o valor contido na célula do grid e na coluna, como pego esses valores e transfiro para essas variáveis?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
marcellomm
Colaborador
Colaborador


Registrado: Segunda-Feira, 7 de Novembro de 2005
Mensagens: 1045

MensagemEnviada: Sex Abr 03, 2009 1:03 pm    Assunto: Responder com Citação

uuuuup!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
abagattini
Mestre
Mestre


Registrado: Terça-Feira, 29 de Novembro de 2005
Mensagens: 758
Localização: Porto Alegre/RS

MensagemEnviada: Sex Abr 03, 2009 2:19 pm    Assunto: Responder com Citação

tenta algo assim:
Código:

conteudo:=table1.fields[dbgrid1.SelectedIndex].AsString;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
marcellomm
Colaborador
Colaborador


Registrado: Segunda-Feira, 7 de Novembro de 2005
Mensagens: 1045

MensagemEnviada: Seg Abr 06, 2009 10:30 am    Assunto: Responder com Citação

Então: Pra conseguir saber qual coluna e qual item está selecionado eu fiz assim:
Código:

procedure TForm1.DBGrid1ColEnter(Sender: TObject);
begin
  Label1.Caption := Format ( 'Coluna: %2d; Linha: %2d',[TFake (DbGrid1).Col,TFake (DbGrid1).Row]);
  Label2.Caption := 'Campo: '+DBGrid1.SelectedField.DisplayName;
  Label3.Caption := 'Item: '+DBGrid1.SelectedField.AsString;
  end;

E no OnChange do DataSource fiz:
Código:

DBGrid1ColEnter (Sender);

Assim toda vez que mudo a coluna e ou a célula os labels informam essas seleções.

E como eu faria para escrever esses parametros na pesquisa:
Código:

SELECT MinhaTabela *.* FROM Minha Tabela
WHERE Campo=(Coluna Selecionada).Valor=(Campo Selecionado)
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
marcellomm
Colaborador
Colaborador


Registrado: Segunda-Feira, 7 de Novembro de 2005
Mensagens: 1045

MensagemEnviada: Ter Abr 07, 2009 1:03 pm    Assunto: Responder com Citação

Up
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
mestrehurricane
Mestre
Mestre


Registrado: Domingo, 14 de Janeiro de 2007
Mensagens: 984
Localização: Belo Horizonte - MG

MensagemEnviada: Ter Abr 07, 2009 7:14 pm    Assunto: Responder com Citação

up! To precisando disso
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
marcellomm
Colaborador
Colaborador


Registrado: Segunda-Feira, 7 de Novembro de 2005
Mensagens: 1045

MensagemEnviada: Qua Abr 08, 2009 4:16 pm    Assunto: Responder com Citação

Up! Ninguém? Crying or Very sad
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
mestrehurricane
Mestre
Mestre


Registrado: Domingo, 14 de Janeiro de 2007
Mensagens: 984
Localização: Belo Horizonte - MG

MensagemEnviada: Qua Abr 08, 2009 7:56 pm    Assunto: Responder com Citação

up!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
edioilha
Novato
Novato


Registrado: Segunda-Feira, 7 de Julho de 2003
Mensagens: 19

MensagemEnviada: Qua Abr 08, 2009 10:10 pm    Assunto: Responder com Citação

Up hehehe
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
marcellomm
Colaborador
Colaborador


Registrado: Segunda-Feira, 7 de Novembro de 2005
Mensagens: 1045

MensagemEnviada: Qui Abr 09, 2009 11:01 am    Assunto: Responder com Citação

Meu up do dia!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
danilo.vitolo
Colaborador
Colaborador


Registrado: Terça-Feira, 3 de Março de 2009
Mensagens: 1029
Localização: São Paulo - SP

MensagemEnviada: Qui Abr 09, 2009 11:15 am    Assunto: Responder com Citação

UP
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
mestrehurricane
Mestre
Mestre


Registrado: Domingo, 14 de Janeiro de 2007
Mensagens: 984
Localização: Belo Horizonte - MG

MensagemEnviada: Qui Abr 09, 2009 2:03 pm    Assunto: Responder com Citação

up de pascoal
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Ir à página 1, 2, 3 ... 13, 14, 15  Próximo
Página 1 de 15

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB