Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
will_pacini Aprendiz
Registrado: Quarta-Feira, 5 de Janeiro de 2011 Mensagens: 214
|
Enviada: Qui Nov 26, 2015 2:10 pm Assunto: Pesquisa de Telefone e Celular no mesmo Campo |
|
|
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 |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
|
Voltar ao Topo |
|
|
will_pacini Aprendiz
Registrado: Quarta-Feira, 5 de Janeiro de 2011 Mensagens: 214
|
Enviada: Qui Nov 26, 2015 2:43 pm Assunto: |
|
|
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 |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Nov 26, 2015 3:17 pm Assunto: |
|
|
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 |
|
|
will_pacini Aprendiz
Registrado: Quarta-Feira, 5 de Janeiro de 2011 Mensagens: 214
|
Enviada: Qui Nov 26, 2015 8:33 pm Assunto: |
|
|
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 |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Nov 27, 2015 3:18 pm Assunto: |
|
|
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 |
|
|
will_pacini Aprendiz
Registrado: Quarta-Feira, 5 de Janeiro de 2011 Mensagens: 214
|
Enviada: Sáb Nov 28, 2015 2:11 pm Assunto: |
|
|
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 |
|
|
will_pacini Aprendiz
Registrado: Quarta-Feira, 5 de Janeiro de 2011 Mensagens: 214
|
Enviada: Qua Dez 02, 2015 8:51 pm Assunto: |
|
|
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 |
|
|
|