Problemas com consulta
Estou tentando fazer um consulta em um prog meu e não estou conseguindo... É o seguinte tenho uma tabela chamada ´dbcliente´ com os seguintes campos: CODIGO,NOME,TELEFONE,PROMOCAO.
quero fazer um filtro, onde o usuario digite o nome da pessoa que ele deseje localizar ou só uma parte do nome.
Estou usando o componente Query, usando parametros e o comando em sql LIKE. veja abaixo
[b:c6f6e88a28]query1.Sql.add(´Select * from dbcliente where nome like :pnome´);[/b:c6f6e88a28]
O q tem de errado e como eu resolvo isto.... agradecido
quero fazer um filtro, onde o usuario digite o nome da pessoa que ele deseje localizar ou só uma parte do nome.
Estou usando o componente Query, usando parametros e o comando em sql LIKE. veja abaixo
[b:c6f6e88a28]query1.Sql.add(´Select * from dbcliente where nome like :pnome´);[/b:c6f6e88a28]
O q tem de errado e como eu resolvo isto.... agradecido
Rodrigovollo
Curtidas 0
Respostas
Faelcavalcanti
14/03/2005
Eu não estou muito lembrado quanto ao uso do LIKE, mais tenta tipow, Where Campo Like ¬Valor, não sei se Like permite parametrizar. Tu podes usar também o starting with, que geralmente uso, e ainda com parâmetro.
GOSTEI 0
Jc_analista
14/03/2005
.... where nome like ´¬TESTE¬´
GOSTEI 0
Fred
14/03/2005
o comando like funciona com parametro sim!!!
tipo ... like :nome
o negocio eh na hora de passar esse parametro
tipo assim:
query.param[0].aString := ´¬´ + edit1.text + ´¬´; //o nome contem o digitado na busca
query.param[0].aString := ´¬´ + edit1.text; //o nome termina com digitado na busca
query.param[0].aString := edit1.text + ´¬´; //o nome começa com o digitado na busca
tipo ... like :nome
o negocio eh na hora de passar esse parametro
tipo assim:
query.param[0].aString := ´¬´ + edit1.text + ´¬´; //o nome contem o digitado na busca
query.param[0].aString := ´¬´ + edit1.text; //o nome termina com digitado na busca
query.param[0].aString := edit1.text + ´¬´; //o nome começa com o digitado na busca
GOSTEI 0
Faelcavalcanti
14/03/2005
Valeu Fred. Com essa eu não sabia. Mas nuca tive problemas com o STARTING WITH. Sobre qual dos dois é o mais rápido não sei dizer.
GOSTEI 0
Rodrigovollo
14/03/2005
o comando like funciona com parametro sim!!!
tipo ... like :nome
o negocio eh na hora de passar esse parametro
tipo assim:
query.param[0].aString := ´¬´ + edit1.text + ´¬´; //o nome contem o digitado na busca
query.param[0].aString := ´¬´ + edit1.text; //o nome termina com digitado na busca
query.param[0].aString := edit1.text + ´¬´; //o nome começa com o digitado na busca
Não esta dando certo da uma olhada
TBCliente.Active := false;
Queryfiltro.sql.Clear;
nome := inputbox(´Digite o nome´,´nome´,´´);
queryfiltro.sql.Add (´select * from dbcliente where nome like :nnome´);
queryfiltro.parambyname(´nnome´).asstring := ´¬´ + nome + ´¬´; //o nome contem o digitado na busca
queryfiltro.Active := true;
GOSTEI 0
Faelcavalcanti
14/03/2005
queryfiltro.parambyname(´nnome´).asstring := ´¬´ + nome + ´¬´;
Cara tenta assim, com [b:10467a7d3d]nnome[/b:10467a7d3d] e não [b:10467a7d3d]nome[/b:10467a7d3d], tipow:
queryfiltro.parambyname(´nnome´).asstring := ´¬´ + nnome + ´¬´;
GOSTEI 0
Fred
14/03/2005
Era pra funcionar!!
tente dar um close na queryfiltro;
e como vc esta fazendo em tempo de execução talves vc tenha setar o tipo do parametro!! algo assim: Query1.ParamByName(´nnome´).DataType := ftString;
tenta ae pra ver.
Eu uso com SQLClientDataSet e funciona!!!
ou ainda tenta passar as aspas
tipow:
queryfiltro.parambyname(´nnome´).asstring := #39 + ´¬´ + nome + ´¬´ + 39;
tente dar um close na queryfiltro;
e como vc esta fazendo em tempo de execução talves vc tenha setar o tipo do parametro!! algo assim: Query1.ParamByName(´nnome´).DataType := ftString;
tenta ae pra ver.
Eu uso com SQLClientDataSet e funciona!!!
ou ainda tenta passar as aspas
tipow:
queryfiltro.parambyname(´nnome´).asstring := #39 + ´¬´ + nome + ´¬´ + 39;
GOSTEI 0
Tnaires
14/03/2005
Olá
Pra passar o parâmetro com aspas, vc pode usar a função QuotedStr.
Abraços
Pra passar o parâmetro com aspas, vc pode usar a função QuotedStr.
queryfiltro.ParamByName(´nome´).AsString := QuotedStr(´¬´ + nome + ´¬´);
Abraços
GOSTEI 0
Faelcavalcanti
14/03/2005
[quote:6c7ba10e63=´RodrigoVollo´] queryfiltro.parambyname(´nnome´).asstring := ´¬´ + nome + ´¬´;
Cara tenta assim, com [b:6c7ba10e63]nnome[/b:6c7ba10e63] e não [b:6c7ba10e63]nome[/b:6c7ba10e63], tipow:
queryfiltro.parambyname(´nnome´).asstring := ´¬´ + nnome + ´¬´;
[/quote:6c7ba10e63]:oops:
Cara que merda minha, agora é que vim ver que era um parâmetro do delphi e não no SQL, nada a ver meu. Ops! Mais a idéia do [b:6c7ba10e63]tnaires[/b:6c7ba10e63] resolve!
GOSTEI 0