Qcontato parameter CONS not found

Delphi

03/09/2016

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

Curtidas 0

Respostas

Raimundo Pereira

Raimundo Pereira

03/09/2016

Verifique se o campo CONS existe em sua tabela
GOSTEI 0
Softsan Software

Softsan Software

03/09/2016

Não existe na tabela p2, o parâmetro não precisa existir na tabela.
GOSTEI 0
Softsan Software

Softsan Software

03/09/2016

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

Luiz Freitas

03/09/2016

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
GOSTEI 0
Natanael Ferreira

Natanael Ferreira

03/09/2016

Tente trocar:

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


Por:

Params[0].AsString:= '%' + AFiltro + '%';
GOSTEI 0
Huidemar Costa

Huidemar Costa

03/09/2016

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

troque por
ParamByName('CONS').AsString := AFiltro ;
GOSTEI 0
Huidemar Costa

Huidemar Costa

03/09/2016

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

Raimundo Pereira

03/09/2016

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

Softsan Software

03/09/2016

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;
GOSTEI 0
POSTAR