| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
marcellomm Colaborador

Registrado: Segunda-Feira, 7 de Novembro de 2005 Mensagens: 1045
|
Enviada: 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 !!! ] |
|
|
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é
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 ? 
Editado pela última vez por marcellomm em Qua Jul 15, 2009 2:14 pm, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
marcellomm Colaborador

Registrado: Segunda-Feira, 7 de Novembro de 2005 Mensagens: 1045
|
Enviada: Qui Abr 02, 2009 7:48 am Assunto: |
|
|
| up |
|
| Voltar ao Topo |
|
 |
abagattini Mestre

Registrado: Terça-Feira, 29 de Novembro de 2005 Mensagens: 758 Localização: Porto Alegre/RS
|
Enviada: Qui Abr 02, 2009 10:23 am Assunto: |
|
|
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 |
|
 |
marcellomm Colaborador

Registrado: Segunda-Feira, 7 de Novembro de 2005 Mensagens: 1045
|
Enviada: Qui Abr 02, 2009 10:49 am Assunto: |
|
|
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 |
|
 |
marcellomm Colaborador

Registrado: Segunda-Feira, 7 de Novembro de 2005 Mensagens: 1045
|
Enviada: Sex Abr 03, 2009 1:03 pm Assunto: |
|
|
| uuuuup! |
|
| Voltar ao Topo |
|
 |
abagattini Mestre

Registrado: Terça-Feira, 29 de Novembro de 2005 Mensagens: 758 Localização: Porto Alegre/RS
|
Enviada: Sex Abr 03, 2009 2:19 pm Assunto: |
|
|
tenta algo assim:
| Código: |
conteudo:=table1.fields[dbgrid1.SelectedIndex].AsString;
|
|
|
| Voltar ao Topo |
|
 |
marcellomm Colaborador

Registrado: Segunda-Feira, 7 de Novembro de 2005 Mensagens: 1045
|
Enviada: Seg Abr 06, 2009 10:30 am Assunto: |
|
|
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 |
|
 |
marcellomm Colaborador

Registrado: Segunda-Feira, 7 de Novembro de 2005 Mensagens: 1045
|
Enviada: Ter Abr 07, 2009 1:03 pm Assunto: |
|
|
| Up |
|
| Voltar ao Topo |
|
 |
mestrehurricane Mestre


Registrado: Domingo, 14 de Janeiro de 2007 Mensagens: 984 Localização: Belo Horizonte - MG
|
Enviada: Ter Abr 07, 2009 7:14 pm Assunto: |
|
|
| up! To precisando disso |
|
| Voltar ao Topo |
|
 |
marcellomm Colaborador

Registrado: Segunda-Feira, 7 de Novembro de 2005 Mensagens: 1045
|
Enviada: Qua Abr 08, 2009 4:16 pm Assunto: |
|
|
Up! Ninguém?  |
|
| Voltar ao Topo |
|
 |
mestrehurricane Mestre


Registrado: Domingo, 14 de Janeiro de 2007 Mensagens: 984 Localização: Belo Horizonte - MG
|
Enviada: Qua Abr 08, 2009 7:56 pm Assunto: |
|
|
| up! |
|
| Voltar ao Topo |
|
 |
edioilha Novato

Registrado: Segunda-Feira, 7 de Julho de 2003 Mensagens: 19
|
Enviada: Qua Abr 08, 2009 10:10 pm Assunto: |
|
|
| Up hehehe |
|
| Voltar ao Topo |
|
 |
marcellomm Colaborador

Registrado: Segunda-Feira, 7 de Novembro de 2005 Mensagens: 1045
|
Enviada: Qui Abr 09, 2009 11:01 am Assunto: |
|
|
| Meu up do dia! |
|
| Voltar ao Topo |
|
 |
danilo.vitolo Colaborador

Registrado: Terça-Feira, 3 de Março de 2009 Mensagens: 1029 Localização: São Paulo - SP
|
Enviada: Qui Abr 09, 2009 11:15 am Assunto: |
|
|
| UP |
|
| Voltar ao Topo |
|
 |
mestrehurricane Mestre


Registrado: Domingo, 14 de Janeiro de 2007 Mensagens: 984 Localização: Belo Horizonte - MG
|
Enviada: Qui Abr 09, 2009 2:03 pm Assunto: |
|
|
| up de pascoal |
|
| Voltar ao Topo |
|
 |
|