Fórum Delphi Pesquisa por telefone #550983

11/04/2016

0

Srs. peço desculpa pela minha ignorancia...
numa determina tela do sistema que estou fazendo tenho dois campos data e um mask edit para efetuar 3 tipos de CONSULTAS seguindo da seguinte forma:
RB1 = por data (Ja esta funcionando entre um periodo)
RB2 = Por nome (Ja esta funcionando)
RB3 = Por telefone => (problema)
cada cliente posso armazenar 3 numeros ate de telefone porem como nao sei de foi cadastrado em (telefone1, Telefone2 ou Telefone3) e pode ser cadastrado marido e esposa gostaria de saber como fazer por exemplo ao digitar por exe: 556 ele me desse todos os que tem essa combinação porem que passasse pelos 3 campos de telefone. tem como?
o nome e data estao certinhos o nome pesquisa por qualquer parte. no inicio meio e fim. Estou usando Delphi 7 e banco em Access.

procedure TformRelAgenda.BitBtnPesquisaClick(Sender: TObject); 
var 
   DataIni : TDateTime; 
   DataFin : TDateTime; 
begin 
   DataIni := DateTimePickerIni.Date; 
   DataFin := DateTimePickerFin.Date; 

   DataModuleBCO_ADV.ADOConnectionBCOAccess.Connected := True; 
   DataModuleBCO_ADV.ADOQueryAgenda.Active            := True; 

   DataModuleBCO_ADV.ADOQueryAgenda.Close; 
   DataModuleBCO_ADV.ADOQueryAgenda.SQL.Clear; 

   if RadioButton1.Checked then 
   begin 
      {Inicio da pesquisa por data} 
      with DataModuleBCO_ADV.ADOQueryAgenda do 
      begin 
//         Close; 
//         SQL.Clear; 
         SQL.Add('Select * from TBL_Agenda where DataCadastro between :DataIni and :DataFin'); 
         Parameters.ParamByName('DataIni').Value := DataIni; 
         Parameters.ParamByName('DataFin').Value := DataFin; 
         ExecSQL; 
         Open; 
      end; 
      {Fim da pesquisa por data} 
   end 
   else if RadioButton2.Checked then 

   {Inicio da pesquisa pelo Nome} 
   with DataModuleBCO_ADV.ADOQueryAgenda do 
   begin 
//      Close; 
//      SQL.Clear; 
      SQL.Add('Select * from TBL_Agenda where NomeCompleto like' + QuotedStr('%'+Edit1.Text+'%')); 
      Open; 
   end 
  {Fim da pesquisa pelo Nome} 

  else 
   {Inicio da pesquisa pelo Nr Telefone} 
   with DataModuleBCO_ADV.ADOQueryAgenda do 
   begin 
//      Close; 
//      SQL.Clear 
      SQL.Add('Select * from TBL_Agenda where Telefone1 like' + QuotedStr('%' +MaskEdit1.Text+ '%')); 
      SQL.Add('Select * from TBL_Agenda where Telefone2 like' + QuotedStr('%' +MaskEdit1.Text+ '%')); 
      SQL.Add('Select * from TBL_Agenda where Telefone3 like' + QuotedStr('%' +MaskEdit1.Text+ '%')); 
      Open; 
   end; 
   {Fim da pesquisa pelo Nr Telefone} 

end;

Usei também:
SQL.Add('Select * from TBL_Agenda where Telefone1 or Telefone2 or Telefone3 like' + QuotedStr('%' +MaskEdit1.Text+ '%'));

Porem nao deu certo
Lembrando que o maskedit tem a seguinte mascara (00)0-0000-0000
intao qualquer nr que a pessoa digitar ele sempre me traz tudo do banco nao apenas os nr que contem o que digitei no mask.

Gostaria que qualquer nr digitado nesse MASK ele me trouxece assim como faz com o nome...
Alguem poderia me ajudar?
Claudio

Claudio

Responder

Posts

11/04/2016

Raimundo Pereira

begin
DM.Q_AGENDA.CLOSE;
DM.Q_AGENDA.SQL.clear;
DM.Q_AGENDA.SQL.Text := 'SELECT * FROM TBL_AGENDA WHERE TELEFONE1=''' +
MaskEdit1.Text + '''' + ' or (TELEFONE2=''' + MaskEdit1.Text +
''') or (TELEFONE3=''' + MaskEdit1.Text + ''')';
try
DM.Q_AGENDA.Open;

if (DM.Q_AGENDA.RecordCount = 1) then
BEGIN
ShowMessage(DM.Q_AGENDA.FieldByName('NOME_CLIENTE').AsString);
exit;
end;

if (DM.Q_AGENDA.RecordCount > 1) then
BEGIN
ShowMessage('Existem [' + IntToStr(DM.Q_AGENDA.RecordCount) +
'], Com o número ' + MaskEdit1.Text + 'cadastrado');
exit;
end;

if (DM.Q_AGENDA.RecordCount = 0) then
BEGIN
ShowMessage('Nenhum registro localizado!');
exit;
end;

except
on E: Exception do
ShowMessage(E.ClassName + ' Verifique sua estrutura SQL : ' + E.Message);

end;
Responder

Gostei + 0

11/04/2016

Claudio

Obrigado.... funcionou... dei uma mechida
SQL.Add('Select * from TBL_Agenda'); 
      SQL.Add('where Telefone1 like :Telefone1 or'); 
      SQL.Add('Telefone2 like :Telefone2 or'); 
      SQL.Add('Telefone3 like :Telefone3'); 
      Parameters.ParamByName('Telefone1').Value := MaskEdit1.Text; 
      Parameters.ParamByName('Telefone2').Value := MaskEdit1.Text; 
      Parameters.ParamByName('Telefone3').Value := MaskEdit1.Text; 
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar