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 

Pesquisa de Telefone e Celular no mesmo Campo

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
will_pacini
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 5 de Janeiro de 2011
Mensagens: 214

MensagemEnviada: Qui Nov 26, 2015 2:10 pm    Assunto: Pesquisa de Telefone e Celular no mesmo Campo Responder com Citação

Boa tarde pessoal,

Estou com uma dúvida,

Tenho uma tabela de clientes onde nela contém os campos Tel1, Tel2, Cel1 e Cel2. Pois bem,

Criei uma tela de pesquisa de cliente por Telefone / Celular,

A pergunta é, como é que faço isso? kkk

Tenho um edit que no onkeypress dele só consegui procurar telefone fixo ou os que começam com 9 que são os celulares,

Mas não consigo fazer o sistema varrer o campo Tel2 caso não encontre o telefone no Tel1 e o mesmo para os Cel1 e Cel2.

Estou usando Xe3 + firebird 2.5

Obrigado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Nov 26, 2015 2:31 pm    Assunto: Responder com Citação

Boa tarde,

Como está a sua query?
Acredito que deveria ficar mais ou menos da seguinte forma:

Código:
select * from Clientes
where
    Tel1 = :TelCel or
    Tel2 = :TelCel or
    Cel1 = :TelCel or
    Cel2 = :TelCel


Espero que ajude.

_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-alugar-guarulhos-residencial-apartamento
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
will_pacini
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 5 de Janeiro de 2011
Mensagens: 214

MensagemEnviada: Qui Nov 26, 2015 2:43 pm    Assunto: Responder com Citação

imex escreveu:
Boa tarde,

Como está a sua query?
Acredito que deveria ficar mais ou menos da seguinte forma:

Código:
select * from Clientes
where
    Tel1 = :TelCel or
    Tel2 = :TelCel or
    Cel1 = :TelCel or
    Cel2 = :TelCel


Espero que ajude.

_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-alugar-guarulhos-residencial-apartamento



Boa tarde Imex, minha query no SqlDataSet está básica,

Select * from Clientes,

no OnKeyPress do meu edit eu coloquei o seguinte ( e "fantástico") código:
Código:
    if key = '9' then
  begin
    ds.DataSet.Filter := 'Cel1 like ' + QuotedStr('%' +LabeledEdit1.Text + '%');
    ds.DataSet.Filtered := True;
    ds.DataSet.Open;
  end
  else
    if key = '4' then
    ds.DataSet.Filter := 'Tel1 like ' + QuotedStr('%' +LabeledEdit1.Text + '%');
    ds.DataSet.Filtered := True;
    ds.DataSet.Open;


eu sei que não é isso rs

fiz só para testar se eu conseguia distinguir o inicio com 4 e 9 por exemplo...

Eu não entendi muito bem o seu código, eu colocaria ele no SqlDataSet?

Obrigado
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Nov 26, 2015 3:17 pm    Assunto: Responder com Citação

A query que sugeri anteriormente seria colocada no SQLDataSet, e você pode trocar o sinal de igual pelo Like.
E o parâmetro seria passado através do ClientDataSet. Ex:

Código:
cdsClientes.Close;
cdsClientes.Params.ParamByName('TelCel').AsString := LabeledEdit1.Text + '%';
cdsClientes.Open;


Mas você também pode fazer o filtro no ClientDataSet utilizando a propriedade Filter mais ou menos como no seu código. Ex:

Código:
var
  TelCel: string;
  // ...
begin
  // ...
  cdsClientes.DisableControls;
  cdsClientes.Filtered := false;
  TelCel := LabeledEdit1.Text + '%';
  cdsClientes.Filter := Format('Tel1 like %s or Tel2 like %s or Cel1 like %s or Cel2 like %s',
                               [TelCel, TelCel, TelCel, TelCel]);
  cdsClientes.Filtered := true;
  cdsClientes.EnableControls;


Espero que ajude.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
will_pacini
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 5 de Janeiro de 2011
Mensagens: 214

MensagemEnviada: Qui Nov 26, 2015 8:33 pm    Assunto: Responder com Citação

Imex obrigado pelas respostas e rapidez mas...

Eu não consegui nem de um jeito nem do outro kk

Mesmo colocando evento do "enter" nada acontece...

Estou vendo aqui o que pode ser.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Sex Nov 27, 2015 3:18 pm    Assunto: Responder com Citação

Nada acontece? Verifique se o cdsClientes do exemplo que postei é o mesmo componente que ds.DataSet do código que você postou.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
will_pacini
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 5 de Janeiro de 2011
Mensagens: 214

MensagemEnviada: Sáb Nov 28, 2015 2:11 pm    Assunto: Responder com Citação

imex escreveu:
Nada acontece? Verifique se o cdsClientes do exemplo que postei é o mesmo componente que ds.DataSet do código que você postou.


Boa tarde,

Desculpe a demora.

É o mesmo sim.

Obrigado
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
will_pacini
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 5 de Janeiro de 2011
Mensagens: 214

MensagemEnviada: Qua Dez 02, 2015 8:51 pm    Assunto: Responder com Citação

Boa noite Imex e aos demais interessados,

Não sei se é o mais correto mas hoje consegui o que eu queria com o seguinte código:

Código:

  begin
    if key = #13 then
     begin
      ds.DataSet.Filter := 'Cel1 like ' + QuotedStr('%' +LabeledEdit1.Text + '%');
          ds.DataSet.Filtered := true;
          ds.DataSet.Open;
          DBGrid1.SetFocus;
      if dmCliente.cdsCliente.IsEmpty then
        begin
          ds.DataSet.Filter := 'Cel2 like ' + QuotedStr('%' +LabeledEdit1.Text + '%');
          ds.DataSet.Filtered := true;
          ds.DataSet.Open;
        end;
       if dmCliente.cdsCliente.RecordCount = 0 then
        begin
          ds.DataSet.Filter := 'TEL1 like ' + QuotedStr('%' +LabeledEdit1.Text + '%');
          ds.DataSet.Filtered := true;
          ds.DataSet.Open;
        end;
       if dmCliente.cdsCliente.RecordCount = 0 then
        begin
          ds.DataSet.Filter := 'TEL2 like ' + QuotedStr('%' +LabeledEdit1.Text + '%');
          ds.DataSet.Filtered := true;
          ds.DataSet.Open;
        end;
       if dmCliente.cdsCliente.RecordCount = 0 then
          ShowMessage('Cliente não encontrado!');
     end;

     end;


Está funcionando, por incrível que pareça kkk

Obrigado pela força Imex.

Abraços
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
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