Question

Lorsque vous essayez d'exécuter le code:

function TDBClass.addNome(nome: String): String;
var
  rsnome: TADOQuery;
begin
  rsnome := TADOQuery.Create(nil);
  rsnome.Connection := connection;
  rsnome.Open();
  rsnome.SQL.Clear;
  rsnome.SQL.Text:='UPDATE enroll SET nome = "test" where id ="1"';
  rsnome.Parameters.ParamByName('nome').Value:= nome;
  rsnome.ExecSQL;
  rsnome.post();
  rsnome.Close();
  rsnome.Free();
end;

Je reçois le message d'erreur « manquant propriété SQL ». Où est-ce que je me trompe?
Merci à l'avance!

Était-ce utile?

La solution

Je ne pense pas que vous voulez utiliser Ouvrir du tout, et que vous utilisez correctement les paramètres.
dire que le SQL n'a pas: PARAM placeholders en elle. Je pense que ce devrait être quelque chose comme: rsnome.SQL.Text:='UPDATE enroll SET nome = :NOME where id = :ID';

Voir cet exemple: AdoQuery erreur en utilisant des paramètres

Autres conseils

Vous appelez rsnome.Open avant de SQL par rsnome.SQL.Text := ....

Vous avez plusieurs erreurs. Vous appelez Open avant que vous ayez assigné SQL ths (et sans avoir besoin de le faire).

Vous essayez de définir une valeur de paramètre n'avez pas créé un paramètre à accepter. (BTW, je fais aussi un paramètre ID, vous pouvez l'utiliser pour mettre à jour plus que le nom d'une personne.)

Vous manipulez pas faire en sorte que les choses se nettoyer dans le cas où il y a une erreur (qui, étant donné le code affiché, il y aura certainement).

Vous utilisez Post, ce qui est nécessaire avec une base de données SQL.

Essayez quelque chose comme ceci:

function TDBClass.addNome(nome: String): String;
var
  rsnome: TADOQuery;
begin
  rsnome := TADOQuery.Create(nil);
  try
    rsnome.Connection := connection;
    rsnome.SQL.Clear;
    rsnome.SQL.Text:='UPDATE enroll SET nome = :nome where id ="1"';
    rsnome.Parameters.ParamByName('nome').Value:= nome;
    rsnome.ExecSQL;
    rsnome.Close();
  finally
    rsnome.Free();
  end;
end;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top