Einzelnen Beitrag anzeigen

Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
782 Beiträge
 
#10

AW: AutoInc primary key Feld wird immer auf 0 gesetzt

  Alt 27. Apr 2025, 10:35
Hallo,

ich habe eine DB Tabelle mit einem AutoInc Integer Feld Namens ID.
Das nutzt in Firebird einen Generator, dessen Wert ich eigentlich mittels
SQL Manager auf 4 gesetzt habe, da ich damit schon 4 Einträge in die Tabelle
gemacht hatte.

Nur wenn ich mit unten stehender Methode meinen neuen Text reinschreiben will
knallt es, weil er ID auf 0 statt 4 oder 5 setzen will.

Eigentlich hab' ich den Code analog zu Code für andere Tabellen der DB geschrieben
die auch AutoID Primärschlüssel haben und definitiv funktionieren. Hat jemand eine
Idee warum es da nicht klappt? Bzw. was kann ich noch testen?

Delphi-Quellcode:
procedure TMyTexts.SaveAddedText(Item: TMyText);
begin
  if not Assigned(FInsertQuery) then
  begin
    FInsertQuery := FDataSetFactory.GetDataSet(true);
    // Relevant, damit FireDAC beim Append später nicht wegen dem noch leeren
    // Primärschlüssel meckert.
    FInsertQuery.UpdateOptions.AutoIncFields := 'ID';
  end;

  FInsertQuery.Open('select ID, TEXT from MY_TEXTS');
  FInsertQuery.Append;
  FInsertQuery.FieldByName('TEXT').AsString := Item.Text;
  FInsertQuery.Post;

  Item.ID := FInsertQuery.FieldByName('ID').AsInteger;
end;
Eigentlich fehlt hier nur ein RefreshRecord nach dem Post bzw. die Einstellung, dass das automatisch/immer gemacht wird:

https://docwiki.embarcadero.com/Libr...ns.RefreshMode
  Mit Zitat antworten Zitat