Hallo zusammen,
ich grüble nun schon seit ein paar Tagen an meinem Problem, dass ich an einer Fremd-
DB ein paar Einträge an Stammdatentabellen ergänzen möchte. Die Fremdtabelle ist relativ einfach aufgebaut, es gibt dort eine ID und eine Einheitenspalte. Die ID-Spalte scheint eine AutoWert-Spalte zu sein, so dass ich inzwischen da angelangt bin, dass wohl ein IBDataSet mit dem Generatorfield zum Einsatz kommen muss.
Mein Code sieht folgendermaßen aus
Delphi-Quellcode:
procedure TFormEinheiten.Button1Click(Sender: TObject);
begin
IBDataSetEinheiten.Insert;
ShowMessage(IntToStr(IBDataSetEinheiten.FieldValues['ID']));
IBDataSetEinheiten.Post;
IBTransactionEinheiten.Commit;
if Not(IBDataSetEinheiten.Active) then IBDataSetEinheiten.Active := True;
end;
Für die Eigenschaft InsertSQL habe ich
- INSERT INTO EINHEITEN (EINHEIT) VALUES ('DUMMY Einheit')
und für die Eigenschaft Generatorfield habe ich
- Generator = GEN_EINHEITENID
Feld = ID
erhöhen um = 1
Ereignis anwenden = On Server
eingetragen. Alles funktioniert prächtig, es werden fortlaufend neue IDs vergeben. Leider kann ich aber damit nicht auf die ID zugreifen, die ich noch für anderen Einträge benötige. Stelle ich aber
Ereignis anwenden auf
On New Record, dann wird zwar bei ShowMessage die nächste ID angezeigt, aber in der Datenbanbk steht die übernächste ID. Im Moment weiß ich nicht, wo der Fehler liegen könnte. Was habe ich vergessen?
Gruß
Manfred
Anmerkung: Wenn
Ereignis anwenden auf
On Server steht, ist natürlich die ShowMessage-Zeile nicht da!