Frage

Beim Versuch, den Code auszuführen:

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;

Ich erhalte die Fehlermeldung "Fehlende SQL -Eigenschaft". Was habe ich falsch gemacht?
Danke im Voraus!

War es hilfreich?

Lösung

Ich glaube nicht, dass Sie Open überhaupt verwenden möchten, und Sie verwenden Parameter falsch.
dh der SQL hat keine: Param -Platzhalter darin. Ich denke, es sollte so etwas sein wie: rsnome.SQL.Text:='UPDATE enroll SET nome = :NOME where id = :ID';

Siehe dieses Beispiel:Adoquery -Fehler unter Verwendung von Parametern

Andere Tipps

Du rufst an rsnome.Open Vor dem Einstellen der SQL durch rsnome.SQL.Text := ....

Sie haben mehrere Fehler. Du rufst an Open Bevor Sie diese SQL zugewiesen haben (und ohne dies zu tun).

Sie versuchen, einen Parameterwert festzulegen, den Sie keinen Parameter erstellt haben, um sie zu akzeptieren. (Übrigens, ich würde ID auch einen Parameter machen, damit Sie dies verwenden können, um mehr als den Namen einer Person zu aktualisieren.)

Sie stellen nicht sicher, dass die Dinge aufgeräumt werden, falls ein Fehler vorliegt (der angesichts des Code, den Sie dort gepostet haben, sicherlich sein wird).

Sie verwenden Post, was mit einer SQL -Datenbank nicht notwendig ist.

Probieren Sie stattdessen so etwas aus:

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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top