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 

Erro com Select

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


Registrado: Sexta-Feira, 19 de Fevereiro de 2010
Mensagens: 364

MensagemEnviada: Qui Abr 05, 2018 7:33 pm    Assunto: Erro com Select Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Abr 05, 2018 8:37 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
CENTURYINF
Membro Junior
Membro Junior


Registrado: Sexta-Feira, 19 de Fevereiro de 2010
Mensagens: 364

MensagemEnviada: Sex Abr 06, 2018 8:55 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
dorivansousa
Novato
Novato


Registrado: Quinta-Feira, 18 de Março de 2004
Mensagens: 9
Localização: Açailândia - Ma

MensagemEnviada: Sex Abr 06, 2018 9:17 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Yahoo Messenger MSN Messenger
CENTURYINF
Membro Junior
Membro Junior


Registrado: Sexta-Feira, 19 de Fevereiro de 2010
Mensagens: 364

MensagemEnviada: Seg Abr 09, 2018 10:04 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Seg Abr 09, 2018 10:24 am    Assunto: Re: Erro com Select Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
CENTURYINF
Membro Junior
Membro Junior


Registrado: Sexta-Feira, 19 de Fevereiro de 2010
Mensagens: 364

MensagemEnviada: Seg Abr 09, 2018 12:39 pm    Assunto: Re: Erro com Select Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Seg Abr 09, 2018 12:44 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
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