Fórum Qcontato parameter CONS not found #561854

03/09/2016

0

Pessoal me deparei com este erro em uma consulta simples, e não consigo descobrir o por que, segue abaixo codigo, se alguem puder ajudar.

procedure TfrmContatos.Localizar(AFiltro: string);
begin

with DM.QContato do
begin
Close;
sql.Clear;
SQL.Add('SELECT * FROM CONTATOS');
SQL.Add('WHERE coalesce(NOME_CONT, '') || coalesce(TEL_CONT, '') || coalesce(FAX_CONT, '') || coalesce(CEL_CONT, '') || coalesce(CIDADE_CONT, '')');
SQL.Add('LIKE :CONS');
ParamByName('CONS').AsString := '%' + AFiltro + '%';
Open();
end;
end;
Softsan Software

Softsan Software

Responder

Posts

04/09/2016

Raimundo Pereira

Verifique se o campo CONS existe em sua tabela
Responder

Gostei + 0

04/09/2016

Softsan Software

Não existe na tabela p2, o parâmetro não precisa existir na tabela.
Responder

Gostei + 0

04/09/2016

Softsan Software

Pessoal este mesmo SQL funciona rodando direto no banco pelo IBExpert, apenas no delphi que não esta dando certo
Responder

Gostei + 0

08/09/2016

Luiz Freitas

Olá!

Você pode fazer duas coisas ai:

> a primeira é dar uma olhada neste post: Criar Parametro nume query em tempo de execução

> a segunda é não criar o parâmetro, passar o valor diretamente no SQL: SQL.Add('LIKE ' +quotedStr('%' + AFiltro + '%'));


Boa sorte!


Att,
Luiz
Responder

Gostei + 0

08/09/2016

Natanael Ferreira

Tente trocar:

ParamByName('CONS').AsString := '%' + AFiltro + '%';


Por:

Params[0].AsString:= '%' + AFiltro + '%';
Responder

Gostei + 0

08/09/2016

Huidemar Costa

Experimente trocar o LIKE por CONTAINING e na linha
ParamByName('CONS').AsString := '%' + AFiltro + '%';

troque por
ParamByName('CONS').AsString := AFiltro ;
Responder

Gostei + 0

08/09/2016

Huidemar Costa

Ah! caso não funcione, qual componente você está utilizando ? (ADO, BDE, IBO, entre outros)
Responder

Gostei + 0

09/09/2016

Raimundo Pereira

Post a estrutura da tabela, irei simular
No gerenciador e no Delphi
Posto o retorno assim que possível
Responder

Gostei + 0

09/09/2016

Softsan Software

Pessoal resolvi tirando o SQL.Add('LIKE :CONS'); e deixando tudo na mesma Linha

procedure TfrmContatos.Localizar(AFiltro: string);
begin

with DM.QContato do
begin
Close;
sql.Clear;
SQL.Add('SELECT * FROM CONTATOS');
SQL.Add('WHERE coalesce(NOME_CONT, '') || coalesce(TEL_CONT, '') || coalesce(FAX_CONT, '') || coalesce(CEL_CONT, '') || coalesce(CIDADE_CONT, '') LIKE :CONS');
ParamByName('CONS').AsString := '%' + AFiltro + '%';
Open();
end;
end;
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar