Erro parâmetros AdoQuery
Pessoal, Boa Noite.
Sou totalmente novo no Delphi. Venho da WEB e preciso fazer projetinho no Delphi (XE8).
Basicamente, a rotina é:
Estou fazendo um SELECT em um banco de dados MySql e vejo qual o ID do último registro inserido. Pego o resultado dessa consulta e guardo em uma variável chamada id.
Uso o ADOQuery e faço um SELECT em um banco de dados access, passando como parâmetro no WHERE o id recebido anteriormente.
Quando rodo a consulta, me retorna: ADOQuery1: Parameter ''id_param'' not found.
Abaixo, meu código para análise. Não crio nada via design, tudo via código.
Alguém consegue me passar uma luz e me mostrar onde esta o erro?
PS: O Nome da tabela no Access realmente é Código, com Upper, Lower Case e acentuação.
Sou totalmente novo no Delphi. Venho da WEB e preciso fazer projetinho no Delphi (XE8).
Basicamente, a rotina é:
Estou fazendo um SELECT em um banco de dados MySql e vejo qual o ID do último registro inserido. Pego o resultado dessa consulta e guardo em uma variável chamada id.
Uso o ADOQuery e faço um SELECT em um banco de dados access, passando como parâmetro no WHERE o id recebido anteriormente.
Quando rodo a consulta, me retorna: ADOQuery1: Parameter ''id_param'' not found.
Abaixo, meu código para análise. Não crio nada via design, tudo via código.
SQL.Clear; ShowMessage(id); //retorna o id recebido na consulta ao Mysql SQL.Add(''SELECT * FROM TABELA''); SQL.Add(''WHERE "Código" >: id_param''); SQL.Add(''ORDER BY "Código" DESC''); SQL.Add(''LIMIT 100''); ADOQuery1.Parameters.ParamByName(''id_param'').Value := StrtoInt(id); Open; Showmessage(''Passou na função tudo belezinha. A Campo na tabela Access é '' + FieldByName(''campo'').AsString); //Não chega aqui.. dá o erro do Parâmetro antes.
Alguém consegue me passar uma luz e me mostrar onde esta o erro?
PS: O Nome da tabela no Access realmente é Código, com Upper, Lower Case e acentuação.
Oswaldo
Curtidas 0
Respostas
Emerson Nascimento
22/03/2022
o sinal dois pontos (:) precisa ficar "colado" no nome do parâmetro.
a comparação é "maior" mesmo?
SQL.Add('WHERE "Código" > :id_param');
GOSTEI 0
Oswaldo
22/03/2022
o sinal dois pontos (:) precisa ficar "colado" no nome do parâmetro.
a comparação é "maior" mesmo?
SQL.Add('WHERE "Código" > :id_param');
Olá, obrigado por ajudar.
sim, a comparação é "maior" realmente. A sua dica funcionou, dicar o : colado ao nome do parâmetro resolveu o erro. Agora, esta dando erro de sintaxe na cláusula ORDER BY.
Consegue ver algum erro nela?
SQL.Add('ORDER BY "Código" DESC');
GOSTEI 0
Gxf
22/03/2022
SQL.Clear;
ShowMessage(id); //retorna o id recebido na consulta ao Mysql
SQL.Add('SELECT * FROM TABELA ');
SQL.Add('WHERE 'Código' > :id_param ');
SQL.Add('ORDER BY 'Código' DESC ');
SQL.Add('LIMIT 100');
ADOQuery1.Parameters.ParamByName('id_param').Value := StrtoInt(id);
Open;
Showmessage(''Passou na função tudo belezinha. A Campo na tabela Access é '' + FieldByName(''campo'').AsString); //Não chega aqui.. dá o erro do Parâmetro antes.
ShowMessage(id); //retorna o id recebido na consulta ao Mysql
SQL.Add('SELECT * FROM TABELA ');
SQL.Add('WHERE 'Código' > :id_param ');
SQL.Add('ORDER BY 'Código' DESC ');
SQL.Add('LIMIT 100');
ADOQuery1.Parameters.ParamByName('id_param').Value := StrtoInt(id);
Open;
Showmessage(''Passou na função tudo belezinha. A Campo na tabela Access é '' + FieldByName(''campo'').AsString); //Não chega aqui.. dá o erro do Parâmetro antes.
GOSTEI 0
Oswaldo
22/03/2022
RESOLVIDO
O problema estava no LIMIT 100.
Esse código funcionou 100%. Agradeço a todos pela ajuda e esclarecimentos.
O problema estava no LIMIT 100.
SQL.Clear; //ShowMessage(id); //retorna o id recebido na consulta ao Mysql SQL.Add('SELECT TOP 100 * FROM TABELA'); SQL.Add('WHERE 'Código' > :id_param '); SQL.Add('ORDER BY 'Código' DESC '); ADOQuery1.Parameters.ParamByName('id_param').Value := StrtoInt(id); Open; Showmessage(''Passou na função tudo belezinha. A Campo na tabela Access é '' + FieldByName(''campo'').AsString);
Esse código funcionou 100%. Agradeço a todos pela ajuda e esclarecimentos.
GOSTEI 0