@Luckner:
Firebird erzeugt eine Id für einen neuen Record automatisch, wenn man das beim Erstellen der Tabelle angegeben hat: Im IbExpert beim Erstellen des Id-Feldes einfach die CheckBox
AI im Feldeditor anklicken, danach erscheint eine Dialogbox, in der du Generator, Procedure und Trigger erstellst. Voreingestellt ist der Trigger auf BeforeInsert, du kannst aber auch AfterInsert wählen, was aber nicht ratsam und auch nicht notwendig ist. Meiner Erfahrung nach wird ein erzeugter Generatorwert wieder gelöscht, wenn auf ein Append ein Cancel folgt, wenn du also den neu erzeugten Record verworfen hast. Beim Löschen von Records stellt der Generator den gelöschten Id-Wert natürlich nicht mehr zur Verfügung, da er einfach nur hochzählt (incrementiert).
Dein Sparsamkeitsgedanke hinsichtlich der Generatorwerte ist völlig sinn- und zwecklos. Du wirst wohl kaum die Anzahl der Aufträge erreichen, um hier auch nur bei Integer (über 4 Milliarden Aufträge) an die Grenze zu kommen, bei BigInt schon gar nicht – es sei denn, deine Lebenserwartung beträgt das Vielfache des Durchschnittsmenschen, so ein paar tausend Jahre würdest du wohl brauchen
Firebird-Datentypen
Dein Problem mit dem DBGrid und der angeblich notwendigen temporären Tabelle habe ich nicht wirklich verstanden. Aber ich versuch's mal:
Wenn du via DBGrid eine Tabelle anzeigen läßt, du aber die einzelnen Felder in Edits bearbeiten willst, mußt du selbst dafür sorgen, daß der Anwender eben nur in den Edits arbeiten kann. Dazu versetzt du das DBGrid vor dem Bearbeiten in den Disabled-Mode (MyDBGrid.Enabled := False), nach Post oder Cancel wieder Enabled := True. Die Editfelder setzt du für gewöhnlich auf ReadOnly := True, das Grid ebenfalls. Im Edit-Modus setzt du die Editfelder auf ReadOnly := False.
Sollte das DBGrid die Änderungen nicht automatisch übernehmen, kannst du mit einem MyQuery.Refresh nachhelfen. Befinden sich in deiner Tabelle ForeignKeys, die auf Einträge in Subtabellen verweisen, verwendest du für das DBGrid ein View und stellst in dessen AfterScroll-Behandlung sicher, daß ein Scrollen im View stets den jeweiligen Record in der Ursprungstabelle selektiert.