Jessica07 0 Denunciar post Postado Janeiro 28, 2015 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
Eisenheim 67 Denunciar post Postado Janeiro 28, 2015 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
Jessica07 0 Denunciar post Postado Janeiro 28, 2015 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
Eisenheim 67 Denunciar post Postado Janeiro 28, 2015 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
Jessica07 0 Denunciar post Postado Janeiro 28, 2015 O que seria esse c. e r. ? Compartilhar este post Link para o post Compartilhar em outros sites
Eisenheim 67 Denunciar post Postado Janeiro 29, 2015 Olá! São "apelidos" que eu dei para as tabelas de cliente e reposições. Compartilhar este post Link para o post Compartilhar em outros sites
Jessica07 0 Denunciar post Postado Janeiro 29, 2015 ah sim, tipo um alias... vou testar o código.. Muito obrigada. Compartilhar este post Link para o post Compartilhar em outros sites
Eisenheim 67 Denunciar post Postado Janeiro 30, 2015 Disponha. :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites