Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
repleis Profissional
Registrado: Segunda-Feira, 5 de Abril de 2010 Mensagens: 582
|
Enviada: Ter Nov 22, 2011 1:09 pm Assunto: Consulta SQL Firebird Like (digitando e filtrando) |
|
|
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 |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
repleis Profissional
Registrado: Segunda-Feira, 5 de Abril de 2010 Mensagens: 582
|
Enviada: Ter Nov 22, 2011 1:32 pm Assunto: |
|
|
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 |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
repleis Profissional
Registrado: Segunda-Feira, 5 de Abril de 2010 Mensagens: 582
|
Enviada: Ter Nov 22, 2011 1:42 pm Assunto: |
|
|
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 |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
|
repleis Profissional
Registrado: Segunda-Feira, 5 de Abril de 2010 Mensagens: 582
|
Enviada: Ter Nov 22, 2011 1:56 pm Assunto: |
|
|
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 |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Ter Nov 22, 2011 2:05 pm Assunto: |
|
|
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 |
|
|
repleis Profissional
Registrado: Segunda-Feira, 5 de Abril de 2010 Mensagens: 582
|
Enviada: Ter Nov 22, 2011 2:09 pm Assunto: |
|
|
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 |
|
|
repleis Profissional
Registrado: Segunda-Feira, 5 de Abril de 2010 Mensagens: 582
|
Enviada: Qua Nov 23, 2011 10:16 am Assunto: |
|
|
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 |
|
|
johnny-walker Moderador
Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Qua Nov 23, 2011 11:18 am Assunto: |
|
|
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 |
|
|
repleis Profissional
Registrado: Segunda-Feira, 5 de Abril de 2010 Mensagens: 582
|
Enviada: Qua Nov 23, 2011 12:02 pm Assunto: |
|
|
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 |
|
|
|