Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jessica07

Consultar na GRID um campo virtual

Recommended Posts

Bom dia,


Preciso de uma ajuda para consultar um campo virtual na grid.


Tenho uma tabela de clientes e reposicoes.

exemp:

tabela.clientes

id_cli

cli_cidade


tabela.reposicoes

id_repo

id_cli

repo_valor


Criei um campo virtual na tabela reposicoes, para enxergar o codigo do cliente e me trazer o nome do mesmo.

Na minha grid de pesquisa de reposicoes coloquei para nao mostrar o código do cliente e sim o nome dele (campo virtual nome_cli).

Tenho um combobox para selecionar o nome do campo do qual quero pesquisar.


Teria como eu realizar a pesquisa pelo campo virtual (nome_cli)? Ou seja, pelo nome do cliente?

Como seria a minha select para realizar esta consulta?


Desde ja agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde, tudo bem?

 

Vamos por partes:

 

Se você criou um campo do tipo "calculado" para sua table/query em questão, você consegue utilizá-lo sim para realizar seu filtro sem problemas.

 

Como você está realizando a sua pesquisa, através do método locate da sua query/table?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu criei um campo do tipo lookup..

 

Vou lhe passar um exemplo de outra pesquisa que fiz..

Na minha consulta de clientes, eu tenho a opção no meu combobox de realizar a pesquisa por NOME, FANTASIA E CIDADE..

 

Coloquei o seguinte código na propriedade onchange do meu edit de pesquisa, assim quando eu escolher o campo que quero pesquisar e digitar o nome, ja vai sendo filtrado no meu grid.

 

procedure TfrmConsultaClientes.edt_pesquisaChange(Sender: TObject);
begin
case cb_campo.ItemIndex of // seleciona o item para pesquisar
0:
begin
dmPrincipal.query_clientes.Close; // fecha query
dmPrincipal.query_clientes.SQL.Clear; // limpa o conteudo sql
dmPrincipal.query_clientes.SQL.Add('select * from clientes where cli_nome like :pnome'); // seleciona na tabela o campo no qual quero pesquisar
dmPrincipal.query_clientes.ParamByName('pnome').AsString:= edt_pesquisa.Text + '%'; // passar parametro para pesquisa
dmPrincipal.query_clientes.Open; // abre a query
end;
1:
begin
dmPrincipal.query_clientes.Close; // fecha query
dmPrincipal.query_clientes.SQL.Clear; // limpa o conteudo sql
dmPrincipal.query_clientes.SQL.Add('select * from clientes where cli_fantasia like :pfantasia'); // seleciona na tabela o campo no qual quero pesquisar
dmPrincipal.query_clientes.ParamByName('pfantasia').AsString:= edt_pesquisa.Text + '%'; // passar parametro para pesquisa
dmPrincipal.query_clientes.Open; // abre a query
end;
2:
begin
dmPrincipal.query_clientes.Close;
dmPrincipal.query_clientes.SQL.Clear;
dmPrincipal.query_clientes.SQL.Add('select * from clientes where cli_cidade like :pcidade');
dmPrincipal.query_clientes.ParamByName('pcidade').AsString:= edt_pesquisa.Text + '%';
dmPrincipal.query_clientes.Open;
end;

 

Essa pesquisa funciona corretamente!

Mas na minha consulta de reposicoes, gostaria de pesquisar pelo nome do cliente e nao pelo código dele entende?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Compreendi. O que você pode fazer, é substituir a forma como faz hoje por uma consulta SQL semelhante a essa abaixo:

select c.cli_nome,
       c.cli_cidade,
       r.valor
from clientes c
inner join reposicoes r 
  on r.id_cli = c.id_cli	   
where c.cli_nome like 'CERQUILHO%'

Faça um teste na IDE da sua base de dados para verificar seu funcionamento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.