[Erledigt] Probleme mit Params

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

[Erledigt] Probleme mit Params

Beitrag von MacWomble »

Hallo,
ich habe folgende Procedure:

Code: Alles auswählen

procedure THistorie.WriteData;
begin
  with dtmBasis.qrySQL do
  begin
    if FID = 0 then
    begin  // Insert
      SQL.Clear;
      SQL.Add('Insert Into Historien');
      SQL.Add('(fk_adresse, fk_kontakt, fk_auftrag, fk_akte, fk_aktenadresse, fk_adressart, his_bezeichnung, his_datei, his_zeichen, his_versandart, his_terminam, his_terminvon, his_terminbis, his_notiz, his_erledigt)');
      SQL.ADD('VALUES');
      SQL.ADD('(:fk_adresse, :fk_kontakt, :fk_auftrag, :fk_akte, :fk_aktenadresse, :fk_adressart, :his_bezeichnung, :his_datei, :his_zeichen, :his_versandart, :his_terminam, :his_terminvon, :his_terminbis, :his_notiz, :his_erledigt);');
    end
    else
    begin  //Update
      SQL.Clear;
      SQL.ADD('UPDATE Historien SET');
      SQL.ADD('fk_adresse = :fk_adresse,');
      SQL.ADD('fk_kontakt = :fk_kontakt,');
      SQL.ADD('fk_auftrag = :fk_auftrag,');
      SQL.ADD('fk_akte = :fk_akte,');
      SQL.ADD('fk_aktenadresse = :fk_aktenadresse,');
      SQL.ADD('fk_adressart =  :fk_adressart,');
      SQL.ADD('his_bezeichnung = :his_bezeichnung,');
      SQL.ADD('his_datei =  :his_datei,');
      SQL.ADD('his_zeichen = :his_zeichen,');
      SQL.ADD('his_versandart = :his_versandart,');
      SQL.ADD('his_terminam = :his_terminam,');
      SQL.ADD('his_terminvon = :his_terminvon,');
      SQL.ADD('his_terminbis = :his_terminbis,');
      SQL.ADD('his_notiz = :his_notiz,');
      SQL.ADD('his_erledigt = :his_erledigt,');
      SQL.ADD('his_stamp = CURRENT_TIMESTAMP');
      SQL.ADD('WHERE idhistorie = :idhistorie;');
    end;
    Prepare;
    Params.ParamByName('fk_adresse').AsInteger := FIDAdresse;
    Params.ParamByName('fk_kontakt').AsInteger := FIDKontakt;
    Params.ParamByName('fk_auftrag').AsInteger := FIDAuftrag;
    Params.ParamByName('fk_akte').AsInteger := FIDAkte;
    Params.ParamByName('fk_aktenadresse').AsInteger := FIDAktenadresse;
    Params.ParamByName('fk_adressart').AsInteger := FIDAdressart;
    Params.ParamByName('his_bezeichnung').AsString := FBezeichnung;
    Params.ParamByName('his_datei').AsString := FDatei;
    Params.ParamByName('his_zeichen').AsString := FZeichen;
    Params.ParamByName('his_versandart').AsString := FVersandart;
    Params.ParamByName('his_terminam').AsString := FTerminam;
    Params.ParamByName('his_terminvon').AsString := FTerminvon;
    Params.ParamByName('his_terminbis').AsString := FTerminbis;
    Params.ParamByName('his_notiz').AsString := FNotiz;
    Params.ParamByName('his_erledigt').AsInteger := FErledigt;
    ExecSQL;
  end;
end;         


Der erste Part (Insert) funktioniert, aber der zweite (Update) leider nicht.

ZEOS-Log:

Code: Alles auswählen

2019-01-11 20:01:13 cat: Prepare, proto: mysql, msg: Statement 6 : UPDATE Historien SET fk_adresse = ?, fk_kontakt = ?, fk_auftrag = ?, fk_akte = ?, fk_aktenadresse = ?, fk_adressart = ?, his_bezeichnung = ?, his_datei = ?, his_zeichen = ?, his_versandart = ?, his_terminam = ?, his_terminvon = ?, his_terminbis = ?, his_notiz = ?, his_erledigt = ?, his_stamp = CURRENT_TIMESTAMP WHERE idhistorie = ?;
2019-01-11 20:01:13 cat: Bind prepared, proto: mysql, msg: Statement 6 : 1,0,1,0,0,0,'Projekt: PR 2018 / 0001','aaaaaaaaaaa','bbbbbbbbbbbbbb','per Brief','','','','',0,null,
2019-01-11 20:01:13 cat: Execute, proto: mysql, msg: Statement 6 : UPDATE Historien SET fk_adresse = ?, fk_kontakt = ?, fk_auftrag = ?, fk_akte = ?, fk_aktenadresse = ?, fk_adressart = ?, his_bezeichnung = ?, his_datei = ?, his_zeichen = ?, his_versandart = ?, his_terminam = ?, his_terminvon = ?, his_terminbis = ?, his_notiz = ?, his_erledigt = ?, his_stamp = CURRENT_TIMESTAMP WHERE idhistorie = ?;


Was läuft hier schief, dass in der Execute nicht die Werte drin stehen?

NACHTRAG: Wenn ich idhistorie als Parameter habe, sollte ich diese Parameter auch bedienen :oops:
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Antworten