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 

Consulta SQL Firebird Like (digitando e filtrando)

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
repleis
Profissional
Profissional


Registrado: Segunda-Feira, 5 de Abril de 2010
Mensagens: 582

MensagemEnviada: Ter Nov 22, 2011 1:09 pm    Assunto: Consulta SQL Firebird Like (digitando e filtrando) Responder com Citação

Olá galera estou atualizando todo meu projeto e to querendo trocar o locate, por uma consulta sql, já ouvi falar do comando like em que vai digitando e vai filtrando já vi isso em alguns programas mais tentei incorporar aqui não consegui por favor me ajudem.

Dados
Banco: Firebird
Componentes de Acesso: Query

desde já obrigado.

O codigo que tentei aqui

Código:


var palavra: string;
begin
if Edit1.Text <> '' then
begin
palavra:= Edit1.Text;
with DM.Q_CadTransporte do
begin
Close;
SQL.Clear;
SQl.Add ('SELECT * FROM CADTRANSPORTE');
SQL.Add ('WHERE MOTORISTA LIKE: palavra');
SQL.Add ('ORDER BY MOTORISTA');
ParamByName ('MOTORISTA').AsString:= '%' + EditConsultar.Text + '%';
Open;
end;
end
else
ShowMessage ('O campo CONSULTAR não pode estar em branco!');
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Nov 22, 2011 1:21 pm    Assunto: Responder com Citação

Explique os componentes Edit1.text e EditConsultar.text

Código:
if Edit1.Text <> '' then
begin
palavra:= Edit1.Text;


E aqui no sql deve usar o parametro não o campo
ParamByName ('MOTORISTA').AsString:= '%' + EditConsultar.Text + '%';

Código:
ParamByName ('palavra').AsString:= '%' + EditConsultar.Text + '%';

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
repleis
Profissional
Profissional


Registrado: Segunda-Feira, 5 de Abril de 2010
Mensagens: 582

MensagemEnviada: Ter Nov 22, 2011 1:32 pm    Assunto: Responder com Citação

adriano_servitec escreveu:
Explique os componentes Edit1.text e EditConsultar.text

Código:
if Edit1.Text <> '' then
begin
palavra:= Edit1.Text;


E aqui no sql deve usar o parametro não o campo
ParamByName ('MOTORISTA').AsString:= '%' + EditConsultar.Text + '%';

Código:
ParamByName ('palavra').AsString:= '%' + EditConsultar.Text + '%';


Oi Adriano Desculpa, sobre os Edit's eles é um só mesmo é que esqueci de renomar o ultimo ficando asssim o código já com suas alterações que vc me passou mais ainda assim fala que o parametro palavra não funciona.

Código:


procedure TFrm_Transporte.Edit1Change(Sender: TObject);
var palavra: string;
begin
if Edit1.Text <> '' then
begin
palavra:= Edit1.Text;
with DM.Q_CadTransporte do
begin
Close;
SQL.Clear;
SQl.Add ('SELECT * FROM CADTRANSPORTE');
SQL.Add ('WHERE MOTORISTA LIKE: palavra');
SQL.Add ('ORDER BY MOTORISTA');
ParamByName ('palavra').AsString:= '%' + Edit1.Text + '%';
Open;
end;
end
else
ShowMessage ('O campo CONSULTAR não pode estar em branco!');

end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Nov 22, 2011 1:34 pm    Assunto: Responder com Citação

Tem que unir os dois pontos so parametro, os dois são casados :palavra

Código:
SQl.Add ('SELECT * FROM CADTRANSPORTE');
SQL.Add ('WHERE MOTORISTA LIKE :palavra');
SQL.Add ('ORDER BY MOTORISTA');


Pronto assim vai reconhecer e funcionar o sql
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
repleis
Profissional
Profissional


Registrado: Segunda-Feira, 5 de Abril de 2010
Mensagens: 582

MensagemEnviada: Ter Nov 22, 2011 1:42 pm    Assunto: Responder com Citação

adriano_servitec escreveu:
Tem que unir os dois pontos so parametro, os dois são casados :palavra

Código:
SQl.Add ('SELECT * FROM CADTRANSPORTE');
SQL.Add ('WHERE MOTORISTA LIKE :palavra');
SQL.Add ('ORDER BY MOTORISTA');


Pronto assim vai reconhecer e funcionar o sql



Blz Adriando Funcionou, só falta dois coisa pra ficar perfeito, eu não quero que faz destinsão entre Letra Minuculas e Maiusculas e como faço para quando eu apagar tudo no edit e voltar todos os registros desde já agradeço.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Nov 22, 2011 1:50 pm    Assunto: Responder com Citação

Utilize o UPPER
Código:

SQl.Add ('SELECT * FROM CADTRANSPORTE');
SQL.Add ('WHERE upper(MOTORISTA) LIKE :palavra');
SQL.Add ('ORDER BY MOTORISTA');


E aqui
Código:

ParamByName ('palavra').AsString:= '%' + Uppercase(EditConsultar.Text) + '%';

Pronto assim o sistema não vai mais direcenciar, pois pra ele tudo estara em maiusculo, mais vc pode digitar como quiser.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
repleis
Profissional
Profissional


Registrado: Segunda-Feira, 5 de Abril de 2010
Mensagens: 582

MensagemEnviada: Ter Nov 22, 2011 1:56 pm    Assunto: Responder com Citação

adriano_servitec escreveu:
Utilize o UPPER
Código:

SQl.Add ('SELECT * FROM CADTRANSPORTE');
SQL.Add ('WHERE upper(MOTORISTA) LIKE :palavra');
SQL.Add ('ORDER BY MOTORISTA');


E aqui
Código:

ParamByName ('palavra').AsString:= '%' + Uppercase(EditConsultar.Text) + '%';

Pronto assim o sistema não vai mais direcenciar, pois pra ele tudo estara em maiusculo, mais vc pode digitar como quiser.

Adriano Ficou Show, faltando mesmo só no edit quando eu apagar tudo retornar a todos os registros da tabela.

Exemplo vou Digitar no edit 'Ana' ai não retornar nenhum registro ai quando eu apagar Ana e não ficar nenhum valor no edit retornar a todos os registros.

Desde já Obrigado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Nov 22, 2011 2:05 pm    Assunto: Responder com Citação

Não sei se vai funcionar pq não testei, fiz aqui no forum o codigo, teste ai e veja se vai dar certo

Código:
procedure TFrm_Transporte.Edit1Change(Sender: TObject);
begin
  with DM.Q_CadTransporte do
  begin
    Close;
    SQL.Clear;
    SQL.Text := ' SELECT * FROM CADTRANSPORTE ';
   if Edit1.Text <> EmptyStr then
      SQL.Text := SQl.Text + ' WHERE upper(MOTORISTA) LIKE :palavra ';
   SQl.Text := SQl.Text + ' ORDER BY MOTORISTA';
   if Edit1.Text <> EmptyStr then
      ParamByName ('palavra').AsString:= '%' + UpperCase(Edit1.Text) + '%';
    Open;
  end;
end;

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
repleis
Profissional
Profissional


Registrado: Segunda-Feira, 5 de Abril de 2010
Mensagens: 582

MensagemEnviada: Ter Nov 22, 2011 2:09 pm    Assunto: Responder com Citação

adriano_servitec escreveu:
Não sei se vai funcionar pq não testei, fiz aqui no forum o codigo, teste ai e veja se vai dar certo

Código:
procedure TFrm_Transporte.Edit1Change(Sender: TObject);
begin
  with DM.Q_CadTransporte do
  begin
    Close;
    SQL.Clear;
    SQL.Text := ' SELECT * FROM CADTRANSPORTE ';
   if Edit1.Text <> EmptyStr then
      SQL.Text := SQl.Text + ' WHERE upper(MOTORISTA) LIKE :palavra ';
   SQl.Text := SQl.Text + ' ORDER BY MOTORISTA';
   if Edit1.Text <> EmptyStr then
      ParamByName ('palavra').AsString:= '%' + UpperCase(Edit1.Text) + '%';
    Open;
  end;
end;


Adriano muito obrigado cara ficou exatamente do jeito que eu queria muito obrigado mesmo.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
repleis
Profissional
Profissional


Registrado: Segunda-Feira, 5 de Abril de 2010
Mensagens: 582

MensagemEnviada: Qua Nov 23, 2011 10:16 am    Assunto: Responder com Citação

Oi Adriano só teve um probleminha que fui perceber depois amigão,
se o cadastra estiver assim: JOSÉ DA SILVA
e no edit digitar assim: josé (ai não faz o select no 'é' ) agora se eu digitar assim: JOSÉ AI SIM, ou seja ele ta fazendo destinção no acento maiuscula e minuscula.


Desde Já agradeço..
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Qua Nov 23, 2011 11:18 am    Assunto: Responder com Citação

Isto é o collate amigo, neste caso vc tem de utilizar o collate win1252 e winpt_br, assim será possível vc fazer pesquisas desta maneira.


bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
repleis
Profissional
Profissional


Registrado: Segunda-Feira, 5 de Abril de 2010
Mensagens: 582

MensagemEnviada: Qua Nov 23, 2011 12:02 pm    Assunto: Responder com Citação

johnny-walker escreveu:
Isto é o collate amigo, neste caso vc tem de utilizar o collate win1252 e winpt_br, assim será possível vc fazer pesquisas desta maneira.


bye

Opa... Deu Certinho amigo abrigado pela dica.
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 -> Delphi 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