Qcontato parameter CONS not found
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;
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
Curtidas 0
Respostas
Raimundo Pereira
03/09/2016
Verifique se o campo CONS existe em sua tabela
GOSTEI 0
Softsan Software
03/09/2016
Não existe na tabela p2, o parâmetro não precisa existir na tabela.
GOSTEI 0
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
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
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
03/09/2016
Tente trocar:
Por:
ParamByName('CONS').AsString := '%' + AFiltro + '%';Por:
Params[0].AsString:= '%' + AFiltro + '%';
GOSTEI 0
Huidemar Costa
03/09/2016
Experimente trocar o LIKE por CONTAINING e na linha
troque por
ParamByName('CONS').AsString := '%' + AFiltro + '%';
troque por
ParamByName('CONS').AsString := AFiltro ;
GOSTEI 0
Huidemar Costa
03/09/2016
Ah! caso não funcione, qual componente você está utilizando ? (ADO, BDE, IBO, entre outros)
GOSTEI 0
Raimundo Pereira
03/09/2016
Post a estrutura da tabela, irei simular
No gerenciador e no Delphi
Posto o retorno assim que possível
No gerenciador e no Delphi
Posto o retorno assim que possível
GOSTEI 0
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;
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