| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
CENTURYINF Membro Junior

Registrado: Sexta-Feira, 19 de Fevereiro de 2010 Mensagens: 364
|
Enviada: Qui Abr 05, 2018 7:33 pm Assunto: Erro com Select |
|
|
Boa noite
tenho um dbgrid e preciso fazer uma pesquisa no nome do cliente a partir de um edit, ex: preciso dos clientes que contenham o sobrenome que digitei no edit em qualquer parte do nome.
ex: SILVA --> preciso de todos os clientes que contenham SILVA em qualquer parte do nome
estou usando como mostro abaixo, mas quando digito a primeira letra no edit
o select ja separa so com a letra S
coloquei esta rotina dentro do Edit3KeyDown do edit
With DM4.table8 do
begin
Close;
query1.SQL.Clear;
query1.Sql.Add(' SELECT * ');
query1.Sql.Add(' FROM nomcli ');
query1.Sql.Add(' WHERE nomcli like :P01 ');
query1.Sql.Add(' ORDER BY nomcli ');
query1.Params[01].AsString := '%'+ Edit3.Text + '%';
Open;
end;
agradeço qualquer ajuda |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Abr 05, 2018 8:37 pm Assunto: |
|
|
Boa noite,
Não entendi muito bem a questão...
Se você quer exibir o resultado da query depois que a digitação estiver completa sugiro que você adicione um botão e passe o seu código para o OnClick desse botão.
Sobre o seu código, não costumo passar o parâmetro pelo índice mas pelo que me lembro o índice do primeiro parâmetro (e único no seu caso) é 0. De qualquer forma acho que é melhor passar o parâmetro pelo seu nome, pois acredito que facilita a manutenção e leitura do código. Ex:
| Código: | | query1.ParamByName('P01').AsString := '%'+ Edit3.Text + '%'; |
Espero que ajude
Editado pela última vez por imex em Ter Fev 27, 2024 10:55 am, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
CENTURYINF Membro Junior

Registrado: Sexta-Feira, 19 de Fevereiro de 2010 Mensagens: 364
|
Enviada: Sex Abr 06, 2018 8:55 am Assunto: |
|
|
Bom dia Imex
eu tentei ja colocar no onchange, botao, onexit
mas todos estes casos, me da o erro
List index on out of bonds(1);
somente no evento onkeydown do edit que funciona, mas ja filtra
antes de terminar a digitacao e trava o edit
nao deixando digitar mais |
|
| Voltar ao Topo |
|
 |
dorivansousa Novato

Registrado: Quinta-Feira, 18 de Março de 2004 Mensagens: 9 Localização: Açailândia - Ma
|
Enviada: Sex Abr 06, 2018 9:17 am Assunto: |
|
|
a contagem de parametros começa em 0 (zero) vc ta ta informando 1
| Código: |
aqui
query1.Params[00].AsString := '%'+ Edit3.Text + '%'; |
_________________ Voçê ensina melhor aquilo que mais precisa aprender |
|
| Voltar ao Topo |
|
 |
CENTURYINF Membro Junior

Registrado: Sexta-Feira, 19 de Fevereiro de 2010 Mensagens: 364
|
Enviada: Seg Abr 09, 2018 10:04 am Assunto: |
|
|
Ola dorivansouza
tambem nao funcionou
achei este Exemplo no dicas delhpi, nao da erro, mas tambem nao filtra o dbgrid
edit1.text:='SP';
with query1 do
begin
close;
params.Clear;
SQL.Clear; //*
Params.CreateParam ( ftstring, 'nom', ptUnknown);
ParamByName ('nom').Asstring := pchar(Edit1.text) ;
sql.add('select * from cli01 where ESTADO = :nom ');
Prepare;
Active:=true;
open;
end;
Lembrando que estou usando uma tabela PARADOX para este teste |
|
| Voltar ao Topo |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Seg Abr 09, 2018 10:24 am Assunto: Re: Erro com Select |
|
|
| CENTURYINF escreveu: | Boa noite
tenho um dbgrid e preciso fazer uma pesquisa no nome do cliente a partir de um edit, ex: preciso dos clientes que contenham o sobrenome que digitei no edit em qualquer parte do nome.
ex: SILVA --> preciso de todos os clientes que contenham SILVA em qualquer parte do nome
estou usando como mostro abaixo, mas quando digito a primeira letra no edit
o select ja separa so com a letra S
coloquei esta rotina dentro do Edit3KeyDown do edit
With DM4.table8 do
begin
Close;
query1.SQL.Clear;
query1.Sql.Add(' SELECT * ');
query1.Sql.Add(' FROM nomcli ');
query1.Sql.Add(' WHERE nomcli like :P01 ');
query1.Sql.Add(' ORDER BY nomcli ');
query1.Params[01].AsString := '%'+ Edit3.Text + '%';
Open;
end;
agradeço qualquer ajuda |
O nome da sua tabela e do seu campo é o mesmo (nomcli)?
Notei que você está usando um componente Table no With mas está fazendo o filtro numa Query (Query1).
Utilize a query no With para filtrar a consulta.
Usando a propriedade Params com índice 0 (zero):
| Código: | With Query1 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM nomcli');
SQL.Add('WHERE nomcli like :P01');
SQL.Add('ORDER BY nomcli');
Params[0].AsString := '%' + Edit3.Text + '%';
Open;
end; |
Usando a propriedade ParamByName:
| Código: | With Query1 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM nomcli');
SQL.Add('WHERE nomcli like :P01');
SQL.Add('ORDER BY nomcli');
ParamByName('P01').AsString := '%' + Edit3.Text + '%';
Open;
end; |
_________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
| Voltar ao Topo |
|
 |
CENTURYINF Membro Junior

Registrado: Sexta-Feira, 19 de Fevereiro de 2010 Mensagens: 364
|
Enviada: Seg Abr 09, 2018 12:39 pm Assunto: Re: Erro com Select |
|
|
depois de varias tentativas acabei errando o nome da taebla, correo é Cli01
mas mesmo assim, nenhuma das duas opcoes funcionaram, nao da erro mas nao executa nada
sera que esta faltando algum unit na Uses ?? |
|
| Voltar ao Topo |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Seg Abr 09, 2018 12:44 pm Assunto: |
|
|
Já verificou esta questão abaixo que coloquei?
| Citação: | Notei que você está usando um componente Table no With mas está fazendo o filtro numa Query (Query1).
Utilize a query no With para filtrar a consulta. |
Se puder poste como está seu código atualmente para analisarmos. _________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
| Voltar ao Topo |
|
 |
|